たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【Unity】Editor拡張の始め方(Inspectorの拡張)

今LookingGlassを使って作っている作品で、Inspectorから入力して、それをインプットとして処理をしたいと思ったのでInspectorの拡張を実施しました。しかし今回もリンク集感がつよいのでちゃんとブログにアウトプットする時間を作らないとな。と考えたり。

リンク

今回参考にしたのは、このあたりです。
qiita.com
anchan828.github.io

Inspectorの拡張

すごく簡単に今回実施したことをいうと、このようなデータクラスを作成して、Hierarcy上のオブジェクトにアタッチします。

public class SceneInformationList : MonoBehaviour {

    /// <summary>
    /// Inspectorから取得したシーン情報を格納
    /// </summary>
    [SerializeField, HideInInspector]
    public List<SceneInformation> sceneInformationList = new List<SceneInformation>();
}

そのあと、/Assets/Editorディレクトリを作成して、そこで拡張用スクリプトを作成します。ざっくりとですが、構成はこんな感じ。

[CanEditMultipleObjects]
[CustomEditor(typeof(SceneInformationList))]
public class SceneInformationListEditor : Editor {
    private void OnEnable()
    {
  (略)
    }

    public override void OnInspectorGUI()
    {
  (略)
     }
}

これで拡張したいクラスを指定します。

[CustomEditor(typeof(SceneInformationList))]

ここに記述した処理でInspectorに表示されます。

public override void OnInspectorGUI()
{
 (略)
}

簡単に例をかきます。これでボタン表示できます。

GUILayout.Button("Push")

これで表示する項目のインデントの調整ができます。

EditorGUI.indentLevel++;

そしてこれで配置する項目の色を変えられます。

GUI.backgroundColor = Color.gray;

などなど

感想

もう少し具体的な処理について書いていく