技術と趣味の亜空間

主にゲームプログラミングとその周辺に関する記事を不定期で上げていきます

【自作クラス対応】Inspectorの配列のラベルをEnumの名前にする【Unity】

f:id:Goropocha:20210211232509p:plain

概要

Inspectorに配列やリストを表示すると要素のラベルが「Element 0」「Element 1」...になるのをenumで置き換えるエディタ拡張です。
Serializableした自作クラスを表示する際にもちゃんと中身が表示されます。
また、そのクラス内で宣言した配列要素のラベルも置き換えられるように対応しました。

コード

利用例

using System;
using UnityEngine;
using UnityEngine.UI;

public class TestEnumIndex : MonoBehaviour
{
    // Inspectorに表示させたいEnum
    public enum ButtonType {
        One = 0,
        Two,
        Three
    }

    public enum StatusType {
        Awake = 0,
        Update,
        Destroy
    }

    // EnumIndex属性で表示したいEnumを設定することでInspector上に反映されます
    [SerializeField, EnumIndex(typeof(ButtonType))]
    private ButtonArray[] buttonArray;

    [Serializable]
    public class ButtonArray {
        // シリアライズしたクラス内のEnumも対応
        [EnumIndex(typeof(StatusType))]
        public Button[] Buttons;
    }
}