かさたな日記

主にUnityを使った制作記録。書いてる人は初心者です。一緒に頑張ろう。

自分用Unityメモ:クラスをシリアライズしてインスペクタから編集

クラスをシリアライズすることで
インスペクタから内容を直接編集することが出来るみたい。

やり方はシリアライズしたいクラスの前に

[System.Serializable]

を付けるだけ。

public class Test : MonoBehaviour


       public List<hoge> hogeList = new List<hoge>();

        [System.Serializable]
        public class hoge
        {
            public string key;
            public int value;
        }

}


上の例ではListになったhogeクラスの内容を
インスペクタから設定することが出来るようになります。

現在unityではDictionaryはインスペクタに対応してないみたいですが、
これを使えば疑似的にDictionaryっぽい使い方もできそうです。
ちょっと回りくどいケド...

public int GetHogeValue(string key)
{
    return hogeList.Find(x => x.key == key).value;
}

こんな感じで中身を持って来れます。
ただ、クラスの中に要素が多い場合はクラスそのものを取得した方が良さそうです。


パフォーマンスは...どうだろうか...