我试过用这个
Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);
它成功创建了对象,如我的层次结构所示。但是我看不到屏幕上的文字,即使有分配给它的文字。我只能在屏幕上看到一个空的游戏对象。
这些屏幕截图显示了正在运行的游戏,所选对象是通过脚本实例化的对象。
当我拖动预制件时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是它的组成部分:
最佳答案
在新的 Unity3D UI
系统中,每个 UI
(Text
、Button
、Panel
code> 等)将在屏幕上渲染的组件必须有一个父 Canvas
组件。
你确实在你的项目中使用了这种方法,你有 Toolbar
、List
等,它们的父级名为 Canvas
,我想它有 Canvas
附加组件。
您需要做的是将实例化的 gameObject
移动到包含 Canvas
组件的其他 gameObject
的子级。
由于可以有多个 Canvas
类型的组件,我建议增加为 Script
中的实例化对象分配 root 的可能性。
脚本:
//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)
}
关于c# - 如何在 Unity 中使用 UI.Text 作为预制件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562690/