筆記 – Unity 中常用的 Attribute – Some Common and Useful Unity Attribute

Attribute 是 C# 的一個功能,更是在 Unity 中很方便的一個部分,可以用於強化 C# script 腳本與 Unity Editor 場景編輯器的互動。

善用 Attribute 可以讓 Editor 更方便的改動 Component 參數 (更加客製化的改動介面)、避開錯誤的參數設定 (超出數值範圍、不該改動的數值等),或者添加全新的功能在 Editor 中等。

本文紀錄許多我常用的、方便的 Attribute,皆是 Unity 內建,直接可以使用。

Inspector 參數欄位顯示

  • [HideInInspector]
    • 將 public 變數從 Inspector 上隱藏。
  • [SerializeField]
    • 將 private 變數顯示在 Inspector 上。
    • 註:本來的用意是序列化 (serialize) 變數成為可在 Inspector 編輯的參數,不過 Unity 本來就會對 public 變數執行序列化,所以通常會用於強制序列化 private 變數。
[HideInInspector]
public int m_HideNumber;
public int m_Number;

[SerializeField]
private string m_SerializeText;
private string m_Text;

attribute1

Inspector 參數欄位修飾

  • [Range(float, float)]
    • 限制 int 或者 float 變數的範圍,並增加一個拉桿 UI。
  • [Multiline]
    • 讓 string 的填寫欄位變成多行。
  • [TextArea]
    • 讓 string 的填寫欄位變成多行。
    • 註:Multiline 與 TextArea 的差別,除了顯示的介面不同之外,前者是可以設定輸入框的行數;後者則是可以設定一個範圍,讓輸入框的高度隨內容彈性調整。
[Range(0, 4)]
public int m_RangeInt;
[Multiline(3)]
public string m_MultilineText;
[TextArea(3, 5)]
public string m_TextAreaText;

attribute2

在 Inspector 加上額外資訊

  • [Header(string)]
    • 顯示 Header 文字。
  • [Tooltip(string)]
    • 當滑鼠移動到參數欄位上時,會顯示說明文字。
[Header("This is Header")]
[Tooltip("This is Tooltip")]
public string m_HasTooltip;

attribute3

Component 修飾

  • [RequireComponent (typeof (ComponentType))]
    • 要求同一物件必須要有指定的 Component 存在。
  • [DisallowMultipleComponent]
    • 限制一個物件只能擁有一個此 Component。
  • [AddComponentMenu(string)]
    • 讓自己撰寫的 Component 腳本,出現在 “Add Component" 選單中。
  • [ExecuteInEditMode]
[System.Serializable]
[AddComponentMenu("Custom/Test/InspectorDemo")]
public class InspectorDemo : MonoBehaviour {

}

attribute4

類別 (Class) / 結構 (Struct) 修飾

  • [System.Serializable]
    • 將類別 (class) 或結構 (struct) 設定成 Serializable 的型別,則可以被 Unity 自動序列化顯示於 Inspector 上,或者使用 [SerializeField] 強制序列化顯示。
[System.Serializable]
public class SerializableClass {
    public int NumberInClass;
    public string StringInClass;
}
public SerializableClass m_SerializableClass;

attribute5

額外說明

更多的內建 Attribute 說明可以在這個網頁中找到:

除了使用 Unity 內建 Attribute 來強化腳本,Unity 也可以自行設計增加 Attribute,客製化所需的功能。

廣告

One thought on “筆記 – Unity 中常用的 Attribute – Some Common and Useful Unity Attribute

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s