预设 (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) 实例,并希望做些更改以影响到所有实例,您可以在检视器 (Inspector) 中点击"选择 (Select)" 按钮来选择源预设 (Prefab)。

  • 有关从脚本实例化预设的信息,请参阅实例化预设 页面。

继承

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

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


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

有几个可重写变量(名称加粗的)的一个已链接游戏对象 (GameObject)。
  • 如果想用新重写值更新源预设 (Prefab) 和所有实例, 您可以点击检视器 (Inspector) 中的应用 (Apply) 按钮。

    • 请注意,将不会应用根的位置和旋转,因为这会影响实例的绝对位置并要将所有实例放在同一个位置。然而,应用根的任何子元素或祖先元素的位置和旋转,因为它们是相对于根的变换计算的。

  • 如果想放弃对特定实例的所有重写,可点击"还原 (Revert)" 按钮。

导入预设 (Prefabs)

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


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

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

  • 选择一个资源实例时,检视器 (Inspector) 中的"应用 (Apply)" 按钮将被替换成"编辑 (Edit)" 按钮。点击此按钮将为您的资源启动编辑应用程序(如 Maya 或 Max)。

,