C#では、Generic Listを要素にもつGeneric List、すなわち、入れ子(多重)のGeneric Listを定義できる。
public List<List<string>> names = new List <List<string>>();
しかし、入れ子(二重)のGeneric Listは、インスペクタに表示されない。
インスペクタで入れ子Listを使うには、要素となるListをコンストラクタの引数とするクラスを定義し、そのクラスを親Listの要素にすることで実装できる。
次の事例は、'MyClass'クラスのGeneric Listを要素とするGeneric Listを作るもの。
子クラス(この事例では'ChildList')は、[System.Serializable]でシリアル化することを忘れないように。
//Generic ListをList要素とするためのクラス('PageController') [System.Serializable] public class ChildList { public List<MyClass> list = new List<MyClass>(); public ChildList(List<MyClass> _list) { list = _list; } } //メインクラス public class MainClass : MonoBehaviour { public List<ChildList> mainList = new List<ChildList>(); }
インスペクタでは、親List(MainList)の要素(Element0, Element1, ....)として、Listを指定できるようになる。
子Listは、
List<MyClass> mylist = mainList[0].list
のように取り出す。