繁体   English   中英

Unity 2D实例化预制文本

[英]Unity 2D Instaniate prefab with text

我是Unity3D的新手,正在寻找一些基本信息。 我已经习惯了面向对象编程,但是我不太明白如何从脚本访问对象。

我创建了一个对象,使其成为预制件(多次使用的计划),并且该对象上带有文本。 文本使用文本网格。 我正在使用C#。

  1. 我如何通过代码(一个简单的开始示例)在0,0处实例化一个名为Tile的新预制对象?
  2. 如何访问对象的文本网格部分以更改文本?

我确定有些简单的事情我不会讲。 只是很难理解如何将代码连接到对象,反之亦然。

更新:还想指出的是,如果尝试在答案中有所不同,我将尝试在开始时加载多个对象。

Update2:只是想解释一下将单声道代码绑定到unity接口时缺少的哪些信息。

在Unity中:

创建任何对象并将其变成预制件。 创建了第二个空游戏对象,将其放置在游戏视图区域中的某个位置。 在Empty游戏对象上创建了一个脚本。

在Mono代码编辑器中:

创建了2个公共变量(C#)

public GameObject spawnObj;
public GameObject spawnPoint;
    void Update () {
        Instantiate (this.spawnObj, this.spawnPoint.transform.position, this.spawnPoint.transform.rotation);
    }

回到Unity:

选择“空游戏对象”。 在脚本Component中,您应该看到2个变量。 将您的Prefab Object拖入var spawnObj。 将Empty游戏对象拖到var spawnPoint中。

我这样做是为了更新,而不是明智的做法,但是它产生了一个多维数据集或2个或更多,我想理解的就是从代码产生。

AD1:是GameObject.Instantiate

var go=GameObject.Instantiate(prefab, Vector3.zero, Quaternion.Identity) as GameObject;

预制是类似于资产的GameObject,用作场景GameObjects的模板。

要使用预制件,您必须将GameObject拖到项目窗口中,并以两种方式之一在代码中引用它:

  1. 使用资源, var prefab=Resources.Load("my-prefab")将加载项目文件Resources/my-prefab 请注意使用特殊的“资源”目录-这是必需的魔术名称。

  2. 使用参考,在MonoBehaviour添加一个public GameObject prefab字段。 然后,在使用此类的GameObject上,您可以将预制件从项目窗口中拖放以创建对其的引用。 然后,您可以在代码中使用prefab字段。 此处无需“资源”目录。

首选选项2,因为所有资源都位于最终二进制文件中,而普通资产在可能的情况下会被裁剪。


AD2:获取TextMesh组件并修改text

go.GetComponent<TextMesh>().text="new text";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM