【Unity】Dictionary型をインスペクターで表示させたい

UnityエディタでDictionary型の変数をインスペクターに直接表示させることは、Unityの標準機能ではサポートされていません。しかし、カスタムエディタスクリプトを使用することで、インスペクターにDictionaryを表示させることができます。

以下は、Dictionaryをインスペクターで表示するための一般的なアプローチです:

Dictionary型をインスペクターに表示させる

Serializableなクラスを作成する

UnityはSerializable属性がついたクラスのみをインスペクターに表示します。まず、キーと値のペアを保持するためのシンプルなクラスを作成します。

Listを使用する

キーと値のペアを保持するクラスのリストを作成し、このリストを使ってインスペクターで編集可能にします。

以下に、C#での具体的なコード例を示します

using System;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class SerializableDictionary : MonoBehaviour
{
    [Serializable]
    public class Entry
    {
        public string Key;
        public int Value;
    }

    public List<Entry> entries = new List<Entry>();

    private Dictionary<string, int> myDictionary;

    void Awake()
    {
        myDictionary = new Dictionary<string, int>();
        foreach (Entry entry in entries)
        {
            myDictionary.Add(entry.Key, entry.Value);
        }
    }
}

このスクリプトでは、Entry クラスがキーと値のペアを表し、これをリストとして保持しています。Awake メソッド内で、このリストから実際のDictionaryを構築しています。

この方法では、Unityのインスペクター上でキーと値のペアを直接編集することが可能になり、ゲームの実行時にこれらのデータをDictionaryとして使用できます。

Unity

Posted by hidepon