C# 如何在Unity中使用UI.Text作为预置?
我试过用这个C# 如何在Unity中使用UI.Text作为预置?,c#,unity3d,scripting,unity3d-gui,C#,Unity3d,Scripting,Unity3d Gui,我试过用这个 Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity); 它成功地创建了对象,如我的层次结构中所示。但是我看不到屏幕上的文本,即使有指定给它的文本。我只能在屏幕上看到一个空的游戏对象 这些屏幕截图显示了正在玩的游戏,所选对象是通过脚本实例化的对象 当我拖动预置时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是其组成部分: 对于每个实例,您可能必须手动启用GuitTexture。它们必须是显示它们
Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity);
它成功地创建了对象,如我的层次结构中所示。但是我看不到屏幕上的文本,即使有指定给它的文本。我只能在屏幕上看到一个空的游戏对象
这些屏幕截图显示了正在玩的游戏,所选对象是通过脚本实例化的对象
当我拖动预置时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是其组成部分:
对于每个实例,您可能必须手动启用GuitTexture。它们必须是显示它们的画布的子对象
// 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);
在新的
Unity3D UI
系统中,每个UI
(文本
,按钮
,面板
等)组件都必须有一个父画布
组件。
实际上,在您的项目中确实使用了这种方法,您有工具栏
,列表
等,它们的父级调用了画布
,我想它附带了画布
组件
您需要做的是将实例化的gameObject
移动到另一个包含Canvas
组件的gameObject
的子级。
由于可以有多个Canvas
类型的组件,我建议为脚本中的实例化对象添加分配根的可能性
脚本:
请显示预置的结构(在场景中拖动时的外观)以及所需文本的位置。@mwilczynski完成。谢谢你的建议!我该怎么做?实例化方法返回一个UnityEngine.Object。该类没有“enabled”字段。我无法将对象作为文本进行操作,因为它的类型不是GuitText,而是object。强制转换不起作用如果启用了预置,克隆副本也将被启用。最新版本的Unity 5.3不支持SetParent。有没有其他方法可以将这个预置实例化为Canvas对象的子对象?我使用的是Unity 5.3.1,它绝对受支持。您确实应该在转换组件my bad(已编辑)上使用SetParent。现在不推荐使用的方法是transform.parent=otherTransform
而不是transform.SetParent(otherTransform)
。确切的错误是什么?也可以方便地将父变换设置为实例化的一部分<代码>游戏对象文本=实例化(条目,新向量3(x,y,0),Quaternion.identity,EntriesRoot)代码>
//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)
}