我试过用这个
Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);
它成功地创建了对象,如我的层次结构所示。但我看不到屏幕上的文字,即使有分配给它的文字。我只能在屏幕上看到一个空的游戏对象。
这些屏幕截图显示了正在玩的游戏,所选对象是通过脚本实例化的对象。
当我拖动预制件时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是它的组成部分:
我试过用这个
Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);
它成功地创建了对象,如我的层次结构所示。但我看不到屏幕上的文字,即使有分配给它的文字。我只能在屏幕上看到一个空的游戏对象。
这些屏幕截图显示了正在玩的游戏,所选对象是通过脚本实例化的对象。
当我拖动预制件时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是它的组成部分:
在新Unity3D UI
系统中,每个将在屏幕上渲染的UI
(Text
、、Button
等Panel
)组件都必须有一个父Canvas
组件。您实际上确实在您的项目中使用了这种方法,在那里您有Toolbar
等List
,这些方法都调用了父级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)
}
他们需要成为显示它们的 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);
对于每个实例,您可能必须手动启用 guiTexture。