Unity之SerializeField(序列化欄位)和Serializable的一點理解
阿新 • • 發佈:2019-01-28
[HideInInspector]表示將原本顯示在面板上的序列化值隱藏起來。
[SerializeField]表示將原本不會被序列化的私有變數和保護變數變成可以被序列化的,那麼它們在下次讀取的值就是你上次賦值的值。
1、如果a是公有的序列化變數。
(1)如果你想要在面板中看到變數a,那麼用:
public int a;
(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
{
[SerializeField]表示將原本不會被序列化的私有變數和保護變數變成可以被序列化的,那麼它們在下次讀取的值就是你上次賦值的值。
1、如果a是公有的序列化變數。
(1)如果你想要在面板中看到變數a,那麼用:
public int a;
(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
{