3

我试过用这个

Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);

它成功地创建了对象,如我的层次结构所示。但我看不到屏幕上的文字,即使有分配给它的文字。我只能在屏幕上看到一个空的游戏对象。

这些屏幕截图显示了正在玩的游戏,所选对象是通过脚本实例化的对象。

在此处输入图像描述

在此处输入图像描述

当我拖动预制件时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是它的组成部分:

在此处输入图像描述

4

3 回答 3

3

在新Unity3D UI系统中,每个将在屏幕上渲染的UIText、、ButtonPanel)组件都必须有一个父Canvas组件。您实际上确实在您的项目中使用了这种方法,在那里您有ToolbarList,这些方法都调用了父级Canvas并且我认为它Canvas附加了组件。

您需要做的是将实例化移动gameObject为其他gameObject持有Canvas组件的子级。由于可以有多个类型的组件Canvas我建议增加为您的.Script

脚本:

//Drag and drop this from inspector; make sure that dragged gameObject
//has Canvas component in it or above it (in parent)
public Transform EntriesRoot;

void Start()
{
    var entry = Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);
    //Put parent to our EntriesRoot
    //EntriesRoot will be our new parent for entry in hierarchy
    entry.transform.SetParent(EntriesRoot)
}
于 2016-01-02T14:27:19.273 回答
2

他们需要成为显示它们的 Canvas 的孩子。

 // find canvas
GameObject canvas = GameObject.Find("Canvas");
// clone your prefab
GameObject text = Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);
// set canvas as parent to the text
text.transform.SetParent(canvas.transform);
于 2016-01-02T13:40:40.807 回答
0

对于每个实例,您可能必须手动启用 guiTexture。

于 2016-01-02T05:10:03.177 回答