我已经在我的统一程序中创建了一堆这样的多维数据集:
foreach (Cube cube in cubeList)
{
if (cube.canStandOn)
{
GameObject block;
block = GameObject.CreatePrimitive(PrimitiveType.Cube);
block.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
block.transform.position = new Vector3(cube._mPos.x + CubeSize.half, cube._mPos.y + CubeSize.half, cube._mPos.z + CubeSize.half);
block.GetComponent<Renderer>().material.color = Color.blue;
}
}
现在,我想在每个块的末尾添加一个文本,详细说明其位置。多维数据集的数量及其位置在每次运行时都可能改变,因此必须像编程块的方式一样以编程方式完成。我在此
Text Mesh
上找不到任何内容,这似乎是一个不错的方法,但是在没有先前创建的带有文本网格的游戏对象的情况下,找不到任何创建的示例。这是在android应用中完成的,因此我无法使用OnGizmos()
函数。在
OnGUI()
中执行此操作可能还可以,但不会显示在我也想要的场景窗口中。有小费吗?
最佳答案
创建另一个GameObject并将多维数据集作为其父级。使用addComponent
将TextMesh
添加到多维数据集下的新GameObject中。将多维数据集的可能性分配给TextMesh
,然后设置y
的TextMesh
a-xis,使其位于顶部立方体。您还需要使textMesh.anchor
和textMesh.alignment
居中居中,以便TextMesh
与立方体一起定位。根据多维数据集的大小,您可能需要调整textOffset
变量。在不缩放多维数据集的情况下,它对我而言效果很好。如果对您不起作用,请像缩放多维数据集一样缩放TextMesh
的缩放比例。
int textOffset = 2;
foreach (Cube cube in cubeList)
{
if (cube.canStandOn)
{
GameObject block;
block = GameObject.CreatePrimitive(PrimitiveType.Cube);
block.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
block.transform.position = new Vector3(cube._mPos.x + CubeSize.half, cube._mPos.y + CubeSize.half, cube._mPos.z + CubeSize.half);
block.GetComponent<Renderer>().material.color = Color.blue;
////////////////////////TEXT MESH CODE//////////////////////
//Create new GameObject
GameObject childObj = new GameObject();
//Make block to be parent of this gameobject
childObj.transform.parent = block.transform;
childObj.name = "Text Holder";
//Create TextMesh and modify its properties
TextMesh textMesh = childObj.AddComponent<TextMesh>();
textMesh.text = "Blah Blah Blah";
textMesh.characterSize = 1;
//Set postion of the TextMesh with offset
textMesh.anchor = TextAnchor.MiddleCenter;
textMesh.alignment = TextAlignment.Center;
textMesh.transform.position = new Vector3(block.transform.position.x, block.transform.position.y + textOffset, block.transform.position.z);
}
}