预设 (Prefabs)

预设 (Prefab) 是一种资源 - 存储在工程视图 (Project View) 中可重复使用的游戏对象 (GameObject)。预设 (Prefabs) 可放入到多个场景中,且每个场景可使用多次。向场景添加一个预设 (Prefab) 时,就会创建它的一个实例。所有预设 (Prefab) 实例都链接到原始预设 (Prefab),实质上是原始预设的克隆。不管您的工程中有多少个实例,您对预设 (Prefab) 作薄出任何更改时,您会看到这些更改应用于所有实例。

创建预设 (Prefabs)

要创建一个预设 (Prefab),只需将您在场景中创建的一个游戏对象 (GameObject) 拖入工程视图 (Project View)。游戏对象 (GameObject) 的名称变成蓝色,显示这是一个预设 (Prefab)。您可以重命名该新预设 (Prefab)。

完成这些步骤之后,游戏对象 (GameObject) 及其所有子对象均已复制到预设 (Prefab) 数据中。该预设 (Prefab) 现在可在多个实例中重复使用。层级视图 (Hierarchy) 中的原始游戏对象 (GameObject) 现在已变成该预设 (Prefab) 的一个实例。

预设 (Prefab) 实例

要在当前场景创建一个预设 (Prefab) 实例,从工程视图 (Project View) 将预设 (Prefab) 拖入场景 (Scene) 或层级视图 (Hierarchy View)。该实例已链接到预设 (Prefab),在层级视图 (Hierarchy) 中其名称以蓝色文字显示。

其中三个游戏对象 (GameObjects) 链接到了预设 (Prefabs),另一个则没有。

继承

继承是指无论何时源预设 (Prefab) 更改,这些更改都会应用到所有已链接的游戏对象 (GameObjects)。例如,如果向预设 (Prefab) 添加新脚本,所有已链接的游戏对象 (GameObjects) 也将立即包含该脚本。但是,它有可能更改单个实例的属性,同时保持链接完整。更改任何一个预设实例的属性,就可看到变量名称变成粗体。变量现已被重写。所有重写属性都不会受到源预设 (Prefab) 更改的影响。

这使您能够修改预设 (Prefab) 实例,让它们不同于源预设 (Prefabs),且不会破坏预设 (Prefab) 链接。


没有可重写变量的一个已链接游戏对象 (GameObject)。

有几个可重写变量(名称加粗的)的一个已链接游戏对象 (GameObject)。

导入预设 (Prefabs)

将网格资源放入资源 (Assets) 文件夹时,Unity 会自动导入文件,并生成一些类似于网格之外预设 (Prefab) 的东西。这实际上不是一个预设 (Prefab),它只是资源文件本身。实例化和处理资源时遇到了一些处理正常预设 (Prefabs) 时不会出现的限制。


请注意,资源 (asset) 图标与预设 (Prefab) 图标略有不同

资源是作为一个游戏对象 (GameObject) 存在于场景中的实例,链接到源资源而非正常预设 (Prefab)。可向该游戏对象 (GameObject) 正常添加组件及从中删除组件。但是,您无法对资源本身作任何更改,因为这样会向资源文件本身添加数据!如果您创建一些想要重复使用的东西,您应当按照上文“创建预设 (Prefabs)”中所列步骤将资源实例制成一个预设 (Prefab)。

Page last updated: 2013-06-13