アマゾンバナーリンク

ディスプレイ広告

スポンサーリンク

UnityのInspectorを超便利にするアセットodin【第2回】

こんにちは!ジェイです。前回odinのAttributesについて解説しました。今回は、Custom Editor Windows、Odin Project Validator、などについて解説していきます。

記事内広告

Custom Editor Windows

OdinEditorWindowの作成方法

EditorWindowではなくOdinEditorWindowを継承することで、インスペクタを作るのと全く同じ方法で、属性だけを使ってUnityのエディタウィンドウを作ることができます。

Protip: カスタムエディタのIMGUIコードとOdinで描かれたエディタを混在させたい場合は、OnInspectorGUI属性を使用することができます。

public class SomeWindow : OdinEditorWindow
{
	[MenuItem("My Game/My Window")]
	private static void OpenWindow()
    {
        GetWindow<SomeWindow>().Show();
    }
	
    [PropertyOrder(-10)]
    [HorizontalGroup]
    [Button(ButtonSizes.Large)]
    public void SomeButton1() { }

    [HorizontalGroup]
    [Button(ButtonSizes.Large)]
    public void SomeButton2() { }

    [HorizontalGroup]
    [Button(ButtonSizes.Large)]
    public void SomeButton3() { }

    [HorizontalGroup]
    [Button(ButtonSizes.Large), GUIColor(0, 1, 0)]
    public void SomeButton4() { }

    [HorizontalGroup]
    [Button(ButtonSizes.Large), GUIColor(1, 0.5f, 0)]
    public void SomeButton5() { }

    [TableList]
    public List<SomeType> SomeTableData;
}

public class SomeType
{
    [TableColumnWidth(50)]
    public bool Toggle;

    [AssetsOnly]
    public GameObject SomePrefab;

    public string Message;

    [TableColumnWidth(160)]
    [HorizontalGroup("Actions")]
    public void Test1() { }

    [HorizontalGroup("Actions")]
    public void Test2() { }
}
注意事項

OdinEditorWindowsのOnGUIメソッドをオーバーライドしてはいけません。代わりに、カスタムのGUIコードを注入したい場合は、DrawEditorsメソッドをオーバーライドするか、カスタムのGUIメソッドにOnInspectorGUI属性を使用します。

何らかの理由でOnGUIメソッドをオーバーライドする必要がある場合は、必ずbase.OnGUI()を呼び出すようにしてください。これがないと、Odinの魔法は何も機能せず、基本的には普通のEditorWindowになってしまいます。

Odin Project Validator

Odin Validator unitypackageをodininspector.com/downloadからダウンロードしてプロジェクトにインポートしたら、Tools > Odin Project Validatorで実行するプロファイルを選び、右上の緑色の “Run X “ボタン(Xはプロファイル名)をクリックしてください。

バリデータは、そのプロファイルを使ってスキャンを実行し、結果を表示します。スキャンされたすべてのオブジェクトは左のツリービューに表示され、すべての結果は下の結果概要に表示されます。この結果概要は検索可能で、列ごとにソートできます。ウィンドウの右側には、現在選択されている結果やツリービューの項目に関連するスキャンされたオブジェクトが表示され、素早く簡単に編集することができます。

以上で、すべての機能が終了です。これで、すべての検証結果を簡単に確認し、必要な修正を行うことができます。

ScriptableObjectおよびコンポーネントの検証

Odin Validatorには、以下の検証属性のサポートが組み込まれています。

適切に検証されたコンポーネントの例は次のようになります。

public class MyComponent : MonoBehaviour
{
    [Required]
    public string Name;

    [AssetsOnly, AssetSelector, Required]
    public GameObject Prefab;

    [ChildGameObjectsOnly, Required]
    public GameObject Child;

    [ValidateInput("@OddNumber % 2 == 1", "@OddNumber + \" is too normal!\"")]
    public int OddNumber;
}

Odin Project Validatorは、プロジェクト全体を通して熱心に使用することで、新しいチームメンバーの受け入れを容易にし、プロジェクトの成長や変化に合わせて安定した状態を維持することができます。

アイコンは鬼塚@取締役さんからお借りしました。

+1