編輯屬性

[InitializeOnLoad]
public class AttributesExample : MonoBehaviour
{
    
    static AttributesExample() 
    {
        [...]
    }

    [InitializeOnLoadMethod]
    private static void Foo()
    {
        [...]
    }
}
[InitializeOnLoad]
public class AttributesExample : MonoBehaviour
{
    
    static AttributesExample() 
    {
        [...]
    }

InitializeOnLoad 屬性允許使用者初始化類而無需使用者進行任何互動。只要編輯器啟動或重新編譯,就會發生這種情況。靜態建構函式保證在任何其他靜態函式之前呼叫它。

[InitializeOnLoadMethod]
private static void Foo()
{
    [...]
}

InitializeOnLoad 屬性允許使用者初始化類而無需使用者進行任何互動。只要編輯器啟動或重新編譯,就會發生這種情況。使用此屬性的方法無法保證執行順序。

[CanEditMultipleObjects]
public class AttributesExample : MonoBehaviour 
{

    public int MyInt;

    private static string prefsText = "";

    [PreferenceItem( "My Prefs" )]
    public static void PreferencesGUI()
    {
        prefsText = EditorGUILayout.TextField( "Prefs Text", prefsText );
    }

    [MenuItem( "Attributes/Foo" )]
    private static void Foo()
    {
        [...]
    }

    [MenuItem( "Attributes/Foo", true )]
    private static bool FooValidate() 
    {
        return false;
    }
}

[PreferenceItem]屬性的結果

StackOverflow 文件

[MenuItem]屬性的結果

StackOverflow 文件

[CanEditMultipleObjects]
public class AttributesExample : MonoBehaviour 

CanEditMultipleObjects 屬性允許你通過多個 GameObjects 編輯元件中的值。如果沒有此元件,在選擇多個 GameObject 時你將看不到元件看起來像是正常但是你會看到訊息不支援多物件編輯

此屬性適用於自定義編輯器以支援多重編輯。非自定義編輯器自動支援多重編輯。

[PreferenceItem( "My Prefs" )]
public static void PreferencesGUI()

PreferenceItem 屬性允許你在 Unity 的首選項選單中建立一個額外的專案。接收方法需要是靜態的才能使用它。

[MenuItem( "Attributes/Foo" )]
private static void Foo()
{
    [...]
}

[MenuItem( "Attributes/Foo", true )]
private static bool FooValidate() 
{
    return false;
}

MenuItem 屬性允許你建立自定義選單項以執行功能。此示例也使用驗證器函式(始終返回 false)以防止執行該函式。

[CustomEditor( typeof( MyComponent ) )]
public class AttributesExample : Editor
{
    [...]
}

CustomEditor 屬性允許你為元件建立自定義編輯器。這些編輯器將用於在檢查器中繪製元件,並需要從 Editor 類派生。

[CustomPropertyDrawer( typeof( MyClass ) )]
public class AttributesExample : PropertyDrawer 
{
    [...]
}

CustomPropertyDrawer 屬性允許你在檢查器中建立自定義屬性抽屜。你可以將這些抽屜用於自定義資料型別,以便可以在檢查器中看到它們。

[DrawGizmo( GizmoType.Selected )]
private static void DoGizmo( AttributesExample obj, GizmoType type )
{
    [...]
}

DrawGizmo 屬性允許你為元件繪製自定義小控制元件。這些小玩意將在場景檢視中繪製。你可以使用 DrawGizmo 屬性中的 GizmoType 引數來決定何時繪製 Gizmo。

接收方法需要兩個引數,第一個是繪製 Gizmo 的元件,第二個是需要繪製 Gizmo 的物件所在的狀態。