我在我的统一程序中创建了一堆像这样的立方体:
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;
}
}
现在我想在每个 block 上方添加一个文本,详细说明其位置。立方体的数量及其位置可能会在每次运行时发生变化,因此必须以编程方式完成,就像创建 block 的方式一样。我在这个 Text Mesh
上找不到任何内容,这似乎是一个不错的方法,但没有找到任何在没有先前创建的带有文本网格的游戏对象的情况下创建的示例。这是在 Android 应用程序中完成的,因此我无法使用 OnGizmos()
函数。
在 OnGUI()
中执行此操作可能没问题,但这不会显示在场景窗口中,而这也是我想要的。
有什么建议吗?
最佳答案
创建另一个游戏对象并将立方体作为其父对象。使用addComponent
添加TextMesh
到立方体下的新游戏对象。将立方体的可能性分配给 TextMesh
然后设置y
TextMesh
的轴这样它将位于立方体的顶部。您还需要制作 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);
}
}
关于c# - 如何按程序将文本附加到生成的游戏对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36940452/