博兔

导航

预制体实例覆盖

在使用预制体时,经常会有这么一个需求。通过同一个预制体创建的多个实例,希望对单个实例进行修改,Unity将该功能称为“Instance overrides”。

例如我们有一个名叫“Tree”的预制体,在场景中创建了两个该预制体的实例,分别为Tree1,Tree2。如果希望Tree1比Tree2更大,可以直接选择Tree1,修改它的Scale属性(注意:这里是修改Tree1这个实例,而不是编辑预制体,如果进入了编辑预制体模式,对预制体的改动会反应到所有实例上)。只有被覆盖的属性才不受预制体影响,未覆盖的属性在预制体变化时任然会反应到对应实例上。

Unity支持覆盖的类型如下

  • Overriding the value of a property(属性值,例如缩放,激活反激活等)

  • Adding a component(添加组件)

  • Removing a component(移除组件)

  • Adding a child GameObject(添加子节点)

不支持删除节点GameObject,变更节点的父节点

使用建议:

覆盖功能会使我们在修改预制体时,并不是所有改动都会反应到所有实例上,这会导致预期外的结果,增加查错和维护成本,建议尽量不要使用。

 

posted on 2021-02-19 22:58  博兔  阅读(81)  评论(0编辑  收藏  举报