版本:Unity 6 (6000.0)
语言:英语
在运行时实例化预制件
使用预制件构建结构

预制件实例化的介绍

预制件一种资产类型,允许您存储带有组件和属性的完整 GameObject。预制件充当模板,您可以从模板中在场景中创建新的对象实例。 更多信息
参见 术语表
在运行时实例化,您的代码需要对预制件的引用。要创建此引用,您可以在代码中创建一个类型为 GameObject 的公共字段,然后在 检查器一个 Unity 窗口,显示有关当前选定 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 > 创建空物体 创建一个空 GameObject。
  4. 通过将脚本拖到空 GameObject 上,将脚本作为组件添加到新的 GameObjectUnity 场景中的基本对象,它可以表示角色、道具、场景、摄像机、路径点等。GameObject 的功能由附加到它的组件定义。 更多信息
    参见 术语表
  5. 项目窗口显示 Assets 文件夹内容的窗口(项目选项卡) 更多信息
    参见 术语表
    拖动任何 创建的预制件 到脚本组件中的 我的预制件 字段。
Dragging a Prefab from the Project window into the My Prefab field in the script component
从项目窗口拖动预制件到脚本组件中的“我的预制件”字段

当您进入播放模式时,您应该看到您的预制件在 场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,实质上是设计和构建游戏的各个部分。 更多信息
参见 术语表
中的位置 (0, 0, 0) 处实例化。

您可以将不同的预制件拖动到 检查器 窗口中的 我的预制件 字段以更改实例化的预制件,而无需更改脚本。

由于第一个示例非常简单,因此您可能不会发现它比将预制件自己放置到场景中更具优势。但是,能够使用代码实例化预制件为您提供了强大的功能,可以在游戏或应用程序运行时动态创建复杂的 GameObject 配置,如本节中的其他示例所示。

常见场景

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

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

  • 从发射器发射一个弹丸预制件。弹丸预制件可以是一个复杂的配置,其中包含一个 网格Unity 的主要图形基元。网格构成 3D 世界的很大一部分。Unity 支持三角化或四边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
    参见 术语表
    刚体一个组件,允许 GameObject 受模拟重力和其它力的影响。 更多信息
    参见 术语表
    碰撞器一个用于处理对象物理碰撞的不可见形状。碰撞器不需要与对象的网格完全相同形状 - 粗略的近似通常更有效,在游戏玩法中无法区分。 更多信息
    参见 术语表
    音频源动态光,以及一个具有自身轨迹的子 GameObject 粒子系统一个组件,通过在场景中生成和动画大量小型 2D 图像来模拟流体实体,例如液体、云和火焰。 更多信息
    参见 术语表

  • 例如车辆、建筑物或角色,例如机器人,分解成许多碎片。在这种情况下,示例脚本会删除并替换完整的可操作机器人预制件,替换为一个损坏的机器人预制件。这个损坏的预制件包含机器人破碎的各个部分,每个部分都设置了自身的刚体和粒子系统。此技术允许您只需一行代码即可将机器人炸成碎片,该代码将原始 GameObject 替换为损坏的预制件。

以下部分将向您展示如何实现这些场景。

其他资源

在运行时实例化预制件
使用预制件构建结构