SerializeField
では多次元配列を表示することができない
また FindProperty
でも取得できないことから
多次元配列はシリアライズできないことが分かる
using System.Collections.Generic; using UnityEngine; public class SampleMonoBehaviour : MonoBehaviour { [SerializeField] private List<GameObject> listObjects; [SerializeField] private GameObject[] arrayObjects; [SerializeField] private List<List<GameObject>> list2Objects; [SerializeField] private GameObject[][] array2Objects; }
これを解決するには IList用のラッパークラスを作成する
[System.Serializable] public class ListWrapper<T> { public List<T> List; }
このラッパークラスを利用すると以下のように多次元配列でも表示することができるが Inspector の表示がカオスになるため基本的には利用しないか、CustomInspector を自作するのが望ましい
using System.Collections.Generic; using UnityEngine; public class SampleMonoBehaviour : MonoBehaviour { [SerializeField] private List<GameObjectList> list2Objects; [SerializeField] private List<GameObjectList2> list3Objects; } [System.Serializable] public class GameObjectList2 : ListWrapper<GameObjectList> { } [System.Serializable] public class GameObjectList : ListWrapper<GameObject> { }