【问题标题】:Unity 2D Instaniate prefab with textUnity 2D 使用文本实例化预制件
【发布时间】:2014-08-28 16:37:50
【问题描述】:

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

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

  1. 我如何通过代码,启动时的简单示例,在 0,0 处实例化一个名为 Tile 的新预制对象?
  2. 如何访问对象的文本Mesh部分来改变文本?

我确定有一些简单的东西我不明白。 只是无法理解如何将代码连接到对象,反之亦然。

更新: 还想指出,如果这会对答案产生影响,我会尝试在开始时加载多个对象。

更新 2: 只是想多解释一下我在将单声道代码绑定到统一界面时缺少哪些信息。

在统一中:

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

在 Mono 代码编辑器中:

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

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

回到 Unity:

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

我这样做是为了更新,不是很聪明,但它产生了一个或 2 个或更多的立方体,我只想了解从代码中产生的所有内容。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    AD1:是GameObject.Instantiate

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

    预制件是一种类似资产的游戏对象,用作场景游戏对象的模板。

    要使用预制件,您必须将 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";
    

    【讨论】:

    • 我仍然没有掌握的第一个“预制”部分(获取我理解的资源)。假设我有一个名为“Car”的预制对象,第一个选项看起来如何,它可以在哪里使用?也许我的问题并不准确,我也在尝试在游戏开始时加载多个项目。谢谢。
    • 编辑了我的评论来解释预制件
    • 是的,2 号似乎是最好的方法。花了一些时间和一些你管的帮助,但有一个盒子可以产卵,哈哈。在上面的 update2 中,我解释了我做了什么。我仍然缺少一些细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多