我在Unity中创建了一个这样的文字网格。
var theText = new GameObject();
var textMesh = theText.AddComponent<TextMesh>();
var meshRenderer = theText.AddComponent<MeshRenderer>();
textMesh.text = name;
textMesh.transform.position = new Vector3(0, 5, 0);
theText.transform.position = new Vector3(0, 5, 0);
同样的转换也可以用在其他物体上,比如四边形。我真的不知道我应该转换哪个对象,所以我同时尝试了以下两种方法 textMesh
和 theText
,也分别。
当我在Unity中点击 "播放 "并在场景中选择创建的对象时,那么文本的轮廓在正确的位置上以橙色高亮显示。然而,可见的白色文本仍然在(0, 0, 0)。
这不仅是在脚本中,当我通过Unity UI创建一个 "3D Object3D Text",并用鼠标拖动它时,也是同样的问题。
如果你给你的文本指定一个颜色,你将能够看到它。试试这段代码。
var theText = new GameObject();
var textMesh = theText.AddComponent<TextMesh>();
var meshRenderer = theText.AddComponent<MeshRenderer>();
textMesh.text = name;
textMesh.color = Color.red; //THIS IS THE NEW LINE
textMesh.transform.position = new Vector3(0, 5, 0);
theText.transform.position = new Vector3(0, 5, 0);
希望能帮到你
为什么你要在代码中创建文本网格?只要到GameObjects -> UI -> Text或Text Mesh Pro中去创建它,并把它放在你的场景中。如果你需要移动它,只需引用
gameObject.transform.position
的脚本中附加到它。
编辑:尝试删除
textMesh.transform.position = new Vector3(0, 5, 0);
第二次编辑:对不起,没有注意,你只需要改变move theText(游戏对象)。
我换了 TextMesh
到 TextMeshPro
(这需要导入 using TMPro;
). TextMeshPro在写这篇文章的时候是实验性的unstable,而且定位似乎也和基本的3D对象的定位不一致,但目前对我来说是一个可以接受的解决方案。
如果有人用TextMesh找到了真正的解决方案,我很乐意把他们的答案选为正确答案!