【Unity】Attribute使用歸納

【參考原文】利用unity3d屬性來設置Inspector面板的特殊行爲

使用 Unity 的C#語言 ,利用屬性(Attribute)來類定義和變量定義或區分其他的變量,您可以設置一種特殊行爲。* 1
例如,您添加[SerializeField]屬性變量,私有變量標識序列化。
[SerializeField]
int 計數;
這裏寫圖片描述
序列化您’的值是存儲到場景和預製體。因爲值存儲在meta元數據中,在Inspector檢查器中設置的值。
你還可以強制指定的組件,對象要被附加組件,您將添加[RequireComponent] * 2 * 3 。
[RequireComponent(typeof(Rigidbody))]
public classAttributeSample : MonoBehaviour {
}
你可以使用屬性時,設置特殊的變量命名約定以外的其他行爲。unity使用屬性,設置特約編輯和方法的行爲。

規則屬性

屬性放置在[below. * * ]的窗體變量和類定義之前。如果你想要設置多個屬性,以逗號分隔 [ * * . * * *]的寫入操作。
例如,如果您想要設置的 SerializeField 和範圍,如描述屬性。
[SerializeField, Range(0, 5)]
int count;
這裏寫圖片描述
屬性適用於立即定義的所有變量。例如,如果在一個聲明中定義多個變量
[SerializeField, Range(0,5)]
int count3, count4;
這裏寫圖片描述
以及適合數組,是適用於所有的變量,使其包含。
[SerializeField, Range(0,5)]
int[] counts;
這裏寫圖片描述

統一標準屬性

要擴展Inspector檢查器屬性
擴展的Inspector檢查器行爲選擇字段。
- SerializeField
private或protected值的序列化。
如果您想要在場景視圖中進行編輯,它非常有用。
[SerializeField]
int count;
- HideInInspector
這種public序列化字段從Inspector檢查器隱藏。如果隱藏的參數、擴展的編輯器中內置的參數和引用關係。
請注意不能從檢查器編輯,HideInInspector 用於構建unity場景隱藏一個序列化的值,當聲明一個字段變量初始化也將忽略。
使用NonSerializable的序列化和HideInInspector。
[HideInInspector]
public int count8;
·NonSerializable
序列化並不妨礙您將從檢查器中消失。
[System.NonSerialized]
public int count9;
- TooltipAttribute
如果鼠標光標是在字段上,顯示的說明文本。
[SerializeField,TooltipAttribute(“説明文”)]
int count5;
這裏寫圖片描述
- SpaceAttribute
設置字段和字段之間的空間。
[SerializeField,Space(15)]
intcount6;
這裏寫圖片描述
- HeaderAttribute
設置標題,就是字段的頭部。需要注意,因爲標題給予所有項目和將 HeaderAttribute 添加到列表中
[SerializeField,HeaderAttribute (“Title”)]
int count7;
這裏寫圖片描述
- MultilineAttribute
設置多行輸入的文本字段。
[SerializeField, MultilineAttribute(2)]
string message1;
這裏寫圖片描述
- TextAreaAttribute
設置多行輸入的文本字段。您可以設置的最大值和最小值的行數。
[SerializeField,TextAreaAttribute(2, 5)]
string message2;
這裏寫圖片描述
- FormerlySerializedAs
當您更改該變量的名稱,保持信息的修改。
unity保持信息字段字段名稱中,字段名稱被更改和銷燬值。當您可以指定FormerlySerializedAs此信息將被帶到目標變量的名稱。
public float first;
這裏寫圖片描述
首先,所有的變量first。我試着改變這第二個變量中。並添加 FormerlySerializedAs 屬性,原” first “。
[FormerlySerializedAs(“first”)]
public float second;
這裏寫圖片描述
即使您更改中的變量名稱的值first在此變量的名稱second之後,將保留。如果你在其他場景中使用可遷移要刪除 FormerlySerializedAs 和各種的麻煩,請注意。

與組件的行爲相關聯的屬性

  • RequireComponentAttribute
    添加組件的行爲附加到對象。例如,剛體等……
    [RequireComponent(typeof(Rigidbody))]
    public classAttributeSample : MonoBehaviour {
    }

  • DisallowMultipleComponent
    不能將幾個組件添加到同一個對象(就是不能重複)。
    [DisallowMultipleComponent]
    public classAttributeSample : MonoBehaviour {
    }

  • ContextMenuAttribute
    我想要從組件的上下文菜單(單擊右鍵)調用方法。例如,如果您在運行時做不被動設置很有用。
    [ContextMenu(“Init”)]
    void Init(){
    }
    這裏寫圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章