Unity prefab实例属性不随预制源改变的问题

现象

今天遇到一个修改了prefab源的属性后,prefab实例属性不随着改变的问题。

操作步骤:

  1. 在Unity Editor中创建prefab对象Player;
  2. 托一个Player的实例p1出来;
  3. 修改Player预制对象的z属性;
  4. p1的z属性未跟着变;

在Unity组件手册中这么说的:

Inheritance 继承

Inheritance means that whenever the source Prefab changes, those changes are applied to all linked GameObjects. For example, if you add a new script to a Prefab, all of the linked GameObjects will instantly contain the script as well. However, it is possible to change the properties of a single instance while keeping the link intact. Simply change any property of a prefab instance, and watch as the variable name becomes bold. The variable is now overridden. All overridden properties will not be affected by changes in the source Prefab.

继承是指当预置源发生变化,这些变化将应用于所有已链接的游戏对象。例如,如果添加一个新的脚本到预置,所有已链接的游戏对象都将立刻包含该脚本。但是,它有可能改变一个单独实例的属性,同时保持链接。改变任何一个预置实例的属性,可以看到变量名称变为粗体,现在该变量可以被重写,所有的重写属性不会影响预置源的变化。

那么,p1.z应该随着Player.z改变才对。

解决

与同事讨论并多次测试后发现,Prefab源的位置Position旋转Rotation不会被Prefab实例继承,而缩放Scale可被继承。

unity-prefab-transform-1.png.bmp

也就是,修改Prefab源的Position和Rotation属性,Prefab实例不会随着改变。

标签:unity3d, prefab

添加新评论