实例化的2D文本未在Unity中显示

时间:2018-08-12 19:02:05

标签: c# unity3d 2d instantiation

对于任何语法错误,请原谅。 (我知道这里有很多这样的问题,但是我还没有找到解决方案)。

我正在尝试使用2d文本实例化2d对象,这里的问题是,实例化文本时不可见。是的,我知道我必须将画布设置为其父对象,但是它仍然无法正常工作... 代码:

Instantiate(levelAsteroid, new Vector3(-7, 2.25f, 0), Quaternion.identity, 
GameObject.FindGameObjectWithTag ("Canvas").transform);

实例对象时的统一层次结构:

Hierarchy

画布设置:

canvas

更新: 我想我找到了问题。 如果我只是实例化该对象,它就可以正常工作,该文本是可见的,但是如果我尝试从脚本中更改该文本,则该文本会损坏,此后,即使我放置了该对象,该文本也不会显示手动在画布上。

已修复: 问题似乎是我用来更改文本的方式。 以前,我曾经实例化该对象并从附加到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”方法的调用,并将其放入附加到要实例化的对象的脚本中。 我找到了解决方案,但我不明白为什么会出现问题。

2 个答案:

答案 0 :(得分:0)

如果没有其他信息,很难弄清您的问题。可能的解决方法是将worldPositionStays参数设置为false的Transform.SetParent方法,而不是在父变换上实例化。您可以在Unity Documentation中找到类似问题的疑难解答。请参见实例化UI元素部分。

答案 1 :(得分:0)

我做的和您做的完全一样,它正在显示文本。我的画布设置是:

渲染模式:比例空间-相机(已连接相机) UI缩放模式:随屏幕尺寸缩放 参考分辨率:1920 x 1440 匹配= 0.5

还要确保当您手动将对象放在画布中时,它还会显示文本。