Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Unity中使用UI.Text作为预置?_C#_Unity3d_Scripting_Unity3d Gui - Fatal编程技术网

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)
}