对于任何语法错误,请原谅。 (我知道这里有很多这样的问题,但是我还没有找到解决方案)。
我正在尝试使用2d文本实例化2d对象,这里的问题是,实例化文本时不可见。是的,我知道我必须将画布设置为其父对象,但是它仍然无法正常工作... 代码:
Instantiate(levelAsteroid, new Vector3(-7, 2.25f, 0), Quaternion.identity,
GameObject.FindGameObjectWithTag ("Canvas").transform);
实例对象时的统一层次结构:
画布设置:
更新: 我想我找到了问题。 如果我只是实例化该对象,它就可以正常工作,该文本是可见的,但是如果我尝试从脚本中更改该文本,则该文本会损坏,此后,即使我放置了该对象,该文本也不会显示手动在画布上。
已修复: 问题似乎是我用来更改文本的方式。 以前,我曾经实例化该对象并从附加到GameController的脚本中更改文本,现在我从附加到具有该文本作为子对象的对象的脚本中更改了文本。
之前: (脚本附在GameController上):
public GameObject exampleOfObj;
void instantiateObj(){
object = Instantiate(exampleOfObj, new Vector3(-800, 300f, 0), Quaternion.identity);
object.transform.SetParent (GameObject.FindGameObjectWithTag ("Canvas").transform, false);
objectText.SetText ("Text: " + value);
}
我只是删除了对“ SetText”方法的调用,并将其放入附加到要实例化的对象的脚本中。 我找到了解决方案,但我不明白为什么会出现问题。
答案 0 :(得分:0)
如果没有其他信息,很难弄清您的问题。可能的解决方法是将worldPositionStays参数设置为false的Transform.SetParent方法,而不是在父变换上实例化。您可以在Unity Documentation中找到类似问题的疑难解答。请参见实例化UI元素部分。
答案 1 :(得分:0)
我做的和您做的完全一样,它正在显示文本。我的画布设置是:
渲染模式:比例空间-相机(已连接相机) UI缩放模式:随屏幕尺寸缩放 参考分辨率:1920 x 1440 匹配= 0.5
还要确保当您手动将对象放在画布中时,它还会显示文本。