Version: Unity 6.0 (6000.0)
语言 : 中文
在运行时实例化预制件
使用预制体构建结构

实例化预制件简介

要在运行时实例化预制件,代码需要对该预制件的引用。为此,可以在代码中创建一个 GameObject 类型的公共字段,然后在检视面板中将要使用的预制件分配给该字段。

下面的脚本示例包含一个公共变量 myPrefab,它是一个预制件的引用。该脚本在 Start 方法中实例化该预制件。

using 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);
    }
}

要使用此示例,请执行以下操作:

  1. 在项目中创建一个新的 MonoBehaviour 脚本,并命名为 InstantiationExample
  2. 将上述代码复制并粘贴到新脚本中,然后保存。
  3. 使用菜单:游戏对象 (GameObject) > 创建空游戏对象 (Create Empty) 创建一个空游戏对象。
  4. 通过将脚本拖动到空游戏对象上,将脚本作为一个组件添加到新的游戏对象。
  5. 创建任意预制件,并将其从项目 (Project) 窗口拖拽到脚本组件的 My Prefab 字段中。
将预制件从项目窗口拖到脚本组件中的 My Prefab 字段中
将预制件从项目窗口拖到脚本组件中的 My Prefab 字段中

进入运行模式后,您应该会在场景的 (0, 0, 0) 位置看到预制件被实例化。

您可以通过将不同的预制件拖拽到检视面板窗口的 My Prefab 字段中,更改实例化的预制件,而无需修改脚本。

虽然这个第一个示例非常简单,似乎与您手动将预制件放置到场景中并无优势。但是,通过代码实例化预制件可以实现强大的功能:在游戏或应用程序运行时动态创建复杂的游戏对象配置,如本节中的其他示例所示。

常见情况

在运行时实例化预制件在以下常见场景中非常有用:

  • 通过在不同位置(例如网格或圆形排列)多次复制单个预制件来构建结构。

  • 从发射器发射飞弹预制件。飞弹预制件可能是一个复杂的配置,包含网格刚体碰撞体音频源动态光源以及一个带有轨迹粒子系统的子游戏对象。

  • 车辆、建筑物或角色(例如机器人)分解成多个部分。在这种场景中,示例脚本会删除完整的机器人预制件,并替换为一个残骸预制件。残骸预制件由机器人的各个破碎部分组成,每个部分都配备了刚体和粒子系统。通过这种方式,只需一行代码即可将机器人炸成碎片,同时将原始游戏对象替换为残骸预制件。

以下各节说明如何实现这些情况。

其他资源

在运行时实例化预制件
使用预制体构建结构
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961