Unity 2D如何实例化带有文本的预制件

3

我是Unity3D的新手,正在寻找一些基础信息。我习惯面向对象编程,但是我无法看到如何从脚本中访问对象。

我创建了一个对象,将其制作成一个预制体(计划多次使用它),并在对象上加入了文本。该文本使用Text Mesh组件,我使用的是C#。

  1. 如何通过代码,在start函数中实例化名为Tile的新预制体对象,并将其放置在0,0的位置?
  2. 如何访问该对象的Text Mesh部分以更改其中的文本内容?

我确信有些简单的地方我没有注意到。只是难以理解如何将代码与对象相连接。

更新: 此外,我尝试在开始时加载多个对象,如果这会影响答案,请告诉我。

更新2: 我只是想进一步解释一下我在将Mono代码与Unity界面绑定时缺失的信息。

在Unity中:

创建任何对象并将其变成预制体。 创建第二个空游戏对象,在播放视图区域的某个地方放置它。 在空对象上创建一个脚本。

在Mono代码编辑器中:

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

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

回到 Unity:

选择空的游戏对象。 在脚本组件中,您应该看到这两个变量。 将您的预制对象拖动到 spawnObj 变量中。 将空的游戏对象拖动到 spawnPoint 变量中。

我在 Update 中执行了此操作,这不太聪明,但它生成了一个或两个或多个立方体,生成代码就是我想要理解的全部。

1个回答

4

AD1:它是GameObject.Instantiate

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

预制体是一种类似于游戏对象的资源,它用作场景游戏对象的模板。

要使用预制体,您必须将游戏对象拖到项目窗口,并以以下两种方式之一在代码中引用:

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

  2. 使用引用,在MonoBehaviour中添加一个public GameObject prefab字段。然后在使用此类的GameObject上,您可以从项目窗口拖放您的预制体,以创建对它的引用。然后您可以在您的代码中使用prefab字段。这里不需要“Resources”目录。

推荐选项2,因为所有资源都在最终二进制文件中,而普通资源在可能时被削减。


AD2:获取TextMesh组件并修改text

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

我还没有完全理解第一个“预制件”部分(获取资源我懂)。假设我有一个名为“Car”的预制对象,第一个选项会是什么样子,它可以在哪里使用?也许我的问题不够准确,我还想在游戏开始时加载多个物品。谢谢。 - Yogurt The Wise
编辑了我的评论以解释预制体。 - Krzysztof Bociurko
是的,第二种方法似乎是最好的方式。我花了一些时间,参考了一些 YouTube 视频,但最终成功生成了一个框,哈哈。在我上面的“更新2”中,我解释了我所做的事情。我还缺少了一些细节。 - Yogurt The Wise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接