-
-
2018.08.22在Unity中,在检视面板中可以看到的,就是被成功序列化了的参数。与序列化相关的常用的关键字有SerializeField,HideInInspector,NonSerialized,Serializable并可以组合使用。
- SerializeField : 表示变量可被序列化。众所周知,公有变量可以在检视面板中看到并编辑,而私有和保护变量不行。SerializeField与private,protected结合使用可以达到让脚本的变量在检视面板里可视化编辑,同时保持它的私有性的目的。
- HideInInspector : 将原本显示在检视面板上的序列化值隐藏起来。
- NonSerialized :通过此方法可以将一个公有变量不序列化并且不显示在检视面板中。
- Serializable:用在类的前面,表示该类可被序列化。
下面用一段代码来举例说明:public class Test :Monobehavior{public int a; //序列化,显示private int b; //不序列化,不显示[SerializeField ] int c; //序列化,显示[HideInInspector] public int d; //序列化,不显示[NonSerialized ] public int e; //不序列化,不显示public Test2 test2; //序列化,显示(可序列化的部分)}[Serializable ]public class Test2{public int aa;private int bb;}此外,Unity还有类SerializedObject,常用于编辑器模式下的工具或导入器中,修改资源或者Prefab的属性。注意:并非所有的公有变量都是可以被序列化的。其中const,static是静态的,属于类而非对象,无法序列化。链表和字典在内存中的存储是不连续的,也无法序列化。