Unity 的预制件系统允许创建、配置和存储游戏对象及其所有组件、属性值和子游戏对象作为可重用资源。预制件资源充当模板,在此模板的基础之上可以在场景中创建新的预制件实例。
如果要在场景中的多个位置或项目中的多个场景之间重用以特定方式配置的游戏对象,比如非玩家角色 (NPC)、道具或景物,则应将此游戏对象转换为预制件。这种方式比简单复制和粘贴游戏对象更好,因为预制件系统可以自动保持所有副本同步。
对预制件资源所做的任何编辑都会自动反映在该预制件的实例中,因此可以轻松地对整个项目进行广泛的更改,而无需对资源的每个副本重复进行相同的编辑。
可将预制件嵌套在另一个预制件中,从而创建在多个级别易于编辑的复杂对象层级视图。
但是,这并不意味着所有预制件实例都必须完全相同。如果希望预制件的某些实例与其他实例不同,则可以覆盖各个预制件实例的设置。还可以创建预制件的变体,从而将一系列覆盖组合在一起成为有意义的预制件变化。
如果游戏对象在一开始不存在于场景中,而希望在运行时实例化游戏对象(例如,使能量块、特效、飞弹或 NPC 在游戏过程中的正确时间点出现),那么也应该使用预制件。
使用预制件的一些常见示例包括:
环境资源 - 例如,在一个关卡附近多次使用的某种树(如上面的截屏所示)。
非玩家角色 (NPC) - 例如,某种类型的机器人可能会在游戏的多个关卡之间多次出现。它们的移动速度或声音可能不同(使用覆盖)。
飞弹 - 例如,海盗的大炮可能会在每次射击时实例化炮弹预制件。
玩家主角 - 玩家预制件可能被放置在游戏每个关卡(不同场景)的起点。