我实例化一个对象并使用下面的代码更改其中的文本网格。
GameObject folder = (GameObject)Instantiate(prefab,<newLocation>,Quaternion.identity);
folder.name = "Folder1";
TextMesh content = GameObject.Find("Folder1").transform.GetChild(0).transform.GetChild(3).
gameObject.GetComponent<TextMesh>();
content.text = "New Content";
但是,当我运行场景时,文本网格仍然具有预制件的值,并且不会更新。有没有人遇到类似的问题或如何解决它的任何想法?
答案 0 :(得分:1)
您提到该项目已正确更新,但是当您创建新项目时,它不再起作用。
我认为您的问题是您使用相同名称“Folder1”命名它们。然后你正在寻找一个名为Folder1的对象,并返回第一个对象。
GameObject folder = (GameObject)Instantiate(prefab,<newLocation>,Quaternion.identity);
folder.name = "Folder1";
TextMesh content = folder.transform.GetChild(0).transform.GetChild(3).
gameObject.GetComponent<TextMesh>();
content.text = "New Content";
这可以解决您的问题。请注意,这不再是查找项目,而是使用新对象的引用。
答案 1 :(得分:0)
你确定你得到了正确的对象吗?你的GetChild
有点令人担忧。也许你可以尝试给你的对象一个标签,然后搜索它。
因此,您将具有textmesh的游戏对象的标记设置为HasTextMesh
,然后在代码中执行:
GameObject folder = (GameObject)Instantiate(prefab,<newLocation>,Quaternion.identity);
TextMesh content = GameObject.FindWithTag("HasTextMesh").GetComponent<TextMesh>();
content.text = "New Content";