首页 > 解决方案 > Unity 中不显示实例化的 2D 文本

问题描述

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

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

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

Unity 层次结构,当对象被实例化时:

等级制度

画布设置:

帆布

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

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

标签: c#unity3d2dinstantiation

解决方案


如果没有其他信息,很难找出您的问题。可能的解决方案是使用 Transform.SetParent 方法并将 worldPositionStays 参数设置为 false,而不是在父变换上实例化。您可以在Unity 文档中找到类似问题的故障排除。请参阅实例化 UI 元素部分。


推荐阅读