c# - Unity 2D 实例化带文本的预制件

标签 c# unity3d

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

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

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

我确定有一些简单的事情我没有接受。 只是难以理解如何将代码连接到对象,反之亦然。

更新: 还要注意,如果这对答案有影响,我会尝试在开始时加载多个对象。

更新 2: 只是想多解释一下在将单声道代码绑定(bind)到统一界面时我遗漏了什么信息。

在 Unity 中:

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

在 Mono 代码编辑器中:

创建了 2 个公共(public)变量 (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 中。

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

最佳答案

AD1:它是GameObject.Instantiate:

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

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

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

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

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

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


AD2:获取TextMesh组件并修改text:

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

关于c# - Unity 2D 实例化带文本的预制件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24623424/

相关文章:

c# - 在添加到字符串之前捕获空值

c# - 我可以使用 Ninject 将 IKernel 注入(inject)类吗

c# - 查找因堆栈溢出异常而失败的测试

c# - 当 7 个 bool 值中有 3 个计算为真时如何调用函数

c# - 有没有一种方法可以在不分配任何内存的情况下对数组进行排序?

c# - 游戏对象在接触地形时振动

c# - 为什么我无法修复错误 : A potentially dangerous Request. 从客户端检测到表单值(结果 ="<t:RequestSecurityTo...")

c# - 在等待新线程产生时调用 thread.sleep()

c# - 使用 IL2CPP 在 Visual Studio 中调试 Unity Hololens?

algorithm - 如何缩放对象并改变位置以保持一个固定点