通常,如果重新命名某变量,甚至通过IDE 做了些重构,一旦 Unity 重新编译 MonoBehaviour 并对该组件的任何实例做出相应更改,变量的值将丢失。然而,如果想要在重新命名变量之后保持之前序列化的值,[FormerlySerializedAs]特性提供了较大的帮助,因为它会在编译期间将数据从该特性中命名的变量复制到给 定的变量,不会再有因...
在Unity当中我们可以使用FormerlySerializedAs属性重命名字段而不丢失其序列化值。 比如我们有一个变量,在编辑器当中拖拽赋值了。 当我们修改变量名以后,这个引用就会丢失了,我们就可以添加FormerlySerializedAs来保留前面的引用。 就算把变量改为son2,引用依然还是在的。 如果后面还要改的话,就每次把上一次的变量名放到...
18. 在变量上添加[FormerlySerializedAs]属性,可以令变量以另外的名称进行序列化,并且在变量自身修改名称时不会丢失之前的序列化的值。 public class formerlySerializedAs : MonoBehaviour { [FormerlySerializedAs("myValue")] private string m_MyValue; public string myValue { get { return m_MyValue; } set...
string fuga; } 1. 2. 3. 4. 5. 6. 7. 8. 这里应该注意, 更改变量名,添加 FormerlySerializedAs 属性和指定 oldName必须同时完成。编译脚本会导致丢弃不必要的数据,尽管更改了变量名(第一次编译),我忘了指定 FormerlySerializedAs,即使添加了它(第二次编译),数据已经是它已被摧毁。第二次编译将破坏数据。
[FormerlySerializedAs("hp")] public int myNumber = 20; 记得要引用命名空间:using UnityEngine.Serialization; 文件夹快捷方式 📂 经常访问的文件夹可以拖到Project面板里,然后创建快捷方式。双击快捷方式就能快速打开目录,省时省力! 快速定位游戏对象 🎯 选中一个游戏对象,按下F键,Scene视口会自动移动到该对象...
[FormerlySerializedAs("a1")] publicstringa2; 这样可以把a1删除了,然后 a1序列化的数据就保存在a2里。但是它这个有局限性,比如这里我想把a1的数据放到一个新的对象里就不行了。比如这样 1 2 3 4 5 6 7 8 9 10 11 12 13 publicclassNewBehaviourScript:MonoBehaviour{ ...
[FormerlySerializedAs("a1")] publicstringa2; 这样可以把a1删除了,然后 a1序列化的数据就保存在a2里。但是它这个有局限性,比如这里我想把a1的数据放到一个新的对象里就不行了。比如这样 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 publicclassNewBehaviourScript:MonoBehaviour{ ...
public class MyClass :MonoBehaviour{ [FormerlySerializedAs("myValue")] private string m_MyValue; public string myValue { get { return m_MyValue; } set { m_MyValue = value; } } } 変数 oldNameリネーム前のフィールドの名前 コンストラクタ ...
那么,使用 FormerlySerializedAs 可以标识这个属性 / 变量的曾用名,让引用了对应变量的组件自动更新为更改后的属性名。 参考:DOC AddComponentMenu(添加到组件菜单) 可以通过使用 AddComponentMenu 将某个常用类直接加到组件菜单里面去,方便使用。 参考:DOC MenuItem(菜单项) ...
AssemblyIsEditorAssembly 汇编级属性,使用该属性的Class会被认为是EditorClass。具体用法不明。 ContextMenu 可以在Inspector的ContextMenu中增加选项。 例如,如下代码的效果 public class TestMenu : MonoBehaviour { [ContextMenu ("Do Something")] void DoSomething () { ...