我們知道藉由將 C# 中的變數設為 Public,可以方便我們在 Unity Inspector 中直接設定變數的數值。雖然是很方便的功能,但某些情況下還是覺得不太方便使用。例如:想要讓整數型別的變數介於某個範圍之間,或者是字串型別可以輸入大量文字等等。我們接下來要介紹的 Attribute 可以讓我們的 Inspector 功能看起來更加強大。
什麼是 Attribute?
Attribute 就像一個標籤一樣,他可以貼在類別、變數、函式前面。只要一貼上這個標籤,這個物件便會賦予特殊功能。通常標籤會用中括號框起來,括號裡面則寫著功能名稱。
[HideInInspector]
public float strength;
上面的範例就是告訴編譯器,strength 這個變數可不是一般的變數,他附有 「即便他被設定成 public,也要讓該變數在 Inspector 中隱藏」的特殊功能。
Attribute 其實是 C# 的語法,詳細的 Attributes 功能可以參考 MSDN 上的說明或上網找 C# Attributes 的相關介紹。而 Unity 也內建了許多 Attibute 屬性,以下就來介紹幾個常用的特殊功能吧!
Property Attribute
Property Attribute 顧名思義,就是加在變數前面的 Attibute 屬性,以下列出的是和 Inspector 相關常用的 Attribute:
- [Space(10)]
在 Inspector 中,和前一個變數保持一段空白的距離,參數為空白的高度 - [Header("Health Settings")]
在 Inspector 中,在欄位前加入一個文字標題,參數為文字標題字串 - [Range(0f, 1f)]
讓 float 或 int 變數有一個範圍上的限制,參數為限制數值的下限與上限。在 Inspector 中,該欄位會變成一個可控制的滑桿(Slider) - [Tooltip("Health value between 0 and 100.")]
讓滑鼠游標移動到該變數欄位上時,顯示提示文字。參數為文字提示字串 - [HideInInspector]
讓該變數在 Inspector 中隱藏,即使被宣告為 Public 也看不到它 - [SerializeField]
讓該變數在 Inspector 中顯示,即使被宣告為 Private 也看得到它 - [Multiline(5)]
讓該字串變數在 Inspector 中顯示為可輸入多行的文字區塊,參數為文字區塊的最大行數 - [TextArea(0, 10)]
讓該字串變數在 Inspector 中顯示為可輸入多行、帶有滑桿的文字區塊,參數為文字區塊的最小和最大行數