通过Inspector配置的数据会以键值对的形式存储,字段名作为键,配置的数据作为值
若为场景物体上的配置,则存储于.unity场景文件中;若为资源文件(ScriptableObject、Prefab等),则存储于文件本身
因此,当重命名某字段时,会丢失对之前键值对的索引,导致配置的数据丢失。
为了解决这一问题,可在对字段进行重命名前,通过 FormerlySerializedAs(string oldName) 来标记之前的键值对的键,以避免数据丢失。
// 改名前
GameObject oldObject;
// 改名后
[FormerlySerializedAs("oldObject")]
GameObject newObject; // 改名后无法通过当前字段名找到对应键值对,则会通过oldObject来寻找
Tips
1、FormerlySerializedAs增加了寻找键值对时用到的键。当使用当前字段名寻找键值对失败时,则使用FormerlySerializedAs中的字段名来寻找键值对
2、在配置字段数据时,FormerlySerializedAs中的值不会影响键值对的存储,Unity只会考虑当前的字段名,并以其作为键值对的键来存储