Unity Editor 自製編輯器(二) - Attribute

我們知道藉由將 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 中顯示為可輸入多行、帶有滑桿的文字區塊,參數為文字區塊的最小和最大行數