要 预制件一种资产类型,允许您存储带有组件和属性的完整 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);
}
}
要使用此示例
InstantiationExample
。Assets
文件夹内容的窗口(项目选项卡) 更多信息当您进入播放模式时,您应该看到您的预制件在 场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,实质上是设计和构建游戏的各个部分。 更多信息
参见 术语表 中的位置 (0, 0, 0) 处实例化。
您可以将不同的预制件拖动到 检查器 窗口中的 我的预制件 字段以更改实例化的预制件,而无需更改脚本。
由于第一个示例非常简单,因此您可能不会发现它比将预制件自己放置到场景中更具优势。但是,能够使用代码实例化预制件为您提供了强大的功能,可以在游戏或应用程序运行时动态创建复杂的 GameObject 配置,如本节中的其他示例所示。
在运行时实例化预制件在以下常见场景中很有用
通过在不同的位置(例如在网格或圆形中)多次复制单个预制件来构建结构。
从发射器发射一个弹丸预制件。弹丸预制件可以是一个复杂的配置,其中包含一个 网格Unity 的主要图形基元。网格构成 3D 世界的很大一部分。Unity 支持三角化或四边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
参见 术语表、刚体一个组件,允许 GameObject 受模拟重力和其它力的影响。 更多信息
参见 术语表、碰撞器一个用于处理对象物理碰撞的不可见形状。碰撞器不需要与对象的网格完全相同形状 - 粗略的近似通常更有效,在游戏玩法中无法区分。 更多信息
参见 术语表、音频源、动态光,以及一个具有自身轨迹的子 GameObject 粒子系统一个组件,通过在场景中生成和动画大量小型 2D 图像来模拟流体实体,例如液体、云和火焰。 更多信息
参见 术语表。
例如车辆、建筑物或角色,例如机器人,分解成许多碎片。在这种情况下,示例脚本会删除并替换完整的可操作机器人预制件,替换为一个损坏的机器人预制件。这个损坏的预制件包含机器人破碎的各个部分,每个部分都设置了自身的刚体和粒子系统。此技术允许您只需一行代码即可将机器人炸成碎片,该代码将原始 GameObject 替换为损坏的预制件。
以下部分将向您展示如何实现这些场景。