实例化预制件简介
Introductory context and common scenarios in which instantiating prefabs is useful.
阅读时间4 分钟最后更新于 1 个月前
要在运行时实例化预制件,代码需要对该预制件的引用。为此,可以在代码中创建一个 类型的公共字段,然后在检视面板中将要使用的预制件分配给该字段。
GameObject下面的脚本示例包含一个公共变量 ,它是一个预制件的引用。该脚本在 方法中实例化该预制件。
myPrefabStartusing UnityEngine;public class InstantiationExample : MonoBehaviour { // Reference to the Prefab. Drag a Prefab into this field in the Inspector. public GameObject myPrefab; // This script will simply instantiate the Prefab when the game starts. void Start() { // Instantiate at position (0, 0, 0) and zero rotation. Instantiate(myPrefab, new Vector3(0, 0, 0), Quaternion.identity); }}
要使用此示例,请执行以下操作:
- 在项目中创建一个新的 MonoBehaviour 脚本,并命名为 。
InstantiationExample - 将上述代码复制并粘贴到新脚本中,然后保存。
- 使用菜单:游戏对象 (GameObject) > 创建空游戏对象 (Create Empty) 创建一个空游戏对象。
- 通过将脚本拖动到空游戏对象上,将脚本作为一个组件添加到新的游戏对象。
- 创建任意预制件,并将其从项目 (Project) 窗口拖拽到脚本组件的 My Prefab 字段中。

将预制件从项目窗口拖到脚本组件中的 My Prefab 字段中
进入运行模式后,您应该会在场景的 (0, 0, 0) 位置看到预制件被实例化。
您可以通过将不同的预制件拖拽到检视面板窗口的 My Prefab 字段中,更改实例化的预制件,而无需修改脚本。
虽然这个第一个示例非常简单,似乎与您手动将预制件放置到场景中并无优势。但是,通过代码实例化预制件可以实现强大的功能:在游戏或应用程序运行时动态创建复杂的游戏对象配置,如本节中的其他示例所示。
常见情况
在运行时实例化预制件在以下常见场景中非常有用:
-
通过在不同位置(例如网格或圆形排列)多次复制单个预制件来构建结构。
-
从发射器发射飞弹预制件。飞弹预制件可能是一个复杂的配置,包含网格、刚体、碰撞体、音频源、动态光源以及一个带有轨迹粒子系统的子游戏对象。
-
车辆、建筑物或角色(例如机器人)分解成多个部分。在这种场景中,示例脚本会删除完整的机器人预制件,并替换为一个残骸预制件。残骸预制件由机器人的各个破碎部分组成,每个部分都配备了刚体和粒子系统。通过这种方式,只需一行代码即可将机器人炸成碎片,同时将原始游戏对象替换为残骸预制件。
以下各节说明如何实现这些情况。