在Unity中SerializeField可以使一个私有的变量在Inspector面板中显示出来,但是很多代码都把HideInInspector与它一起使用,解释是说这样可以保护私有成员不会被错误的修改。 这就很奇怪了,就好比下面这段代码: [HideInInspector][SerializeField]int a; public int b { get { return a; } set { a = value; }
1.2如果你不想在面板中看到a,那么用: [HideInInspector] public int a; // 这样a可以在程序中被代码赋值,但不会在面板中看到并手动设置赋值。
2 如果a是私有的序列化变量,你想在面板中读取并保存,那么用: [SerializeField] private int a;
3.如果a是私有的序列化变量,你想在面板中读取,但是不保存,那么用: [HideInInspector][SerializedField] private int a; public int b{ get{return a;} } 然后在Editor中显示, EditorGUILayout.LabelField("value",game.B.ToString());
4如果a是私有序列化变量,你不想在面板中做任何操作(不想看到,也不想写),但是想要在程序中给它赋值,那么用。 [HideInInspector][SerializedField] private int a; public int b{ get{return a;} set{a = value;} }