兩個比較困惑的關鍵字解釋

首先,Unity會自動爲Public變量做序列化,序列化的意思是說再次讀取Unity時序列化的變量是有值的,不需要你再次去賦值,因爲它已經被保存下來。
然後是,什麼樣的值會被顯示在面板上?
已經被序列化,但是沒有用HideInInspector標記的值。

[HideInInspector]
表示將原本顯示在面板上的序列化值隱藏起來。

[SerializeField]
表示將原本不會被序列化的私有變量和保護變量可以序列化,這麼他們在下次讀取時,就是你上次賦值的值。

1
如果a是公有的序列化變量。
1.1
如果你想要在面板中看到a,那麼用:
public int a;

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;}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章