前提・実現したいこと
図で説明します。
以下のような支配構造があり、これらの各子のオブジェクトとそれに付属するList<EventList>からEventListを取得し、
画像2のような形で保持したいと思っています。
画像2
試したこと
初めにList<List<EventList>>を試したのですが、これではGameObjectを保持できず、EventListしか取得できませんでした。
次に独自クラスで管理しようと思い、GameObjectとEventListを持つクラスを作成し、これをList化して取得を試みましたが、
この方法だと画像2の上側のようにただ順番に格納されるだけで思うような形ではありませんでした。
型違いの値を配列で保持する方法を調べましたが、求める答えはヒットしませんでした。
どのようにすればオブジェクトごとにEnumを保持できるでしょうか?
追記
オブジェクト型での保持は無駄が多い保持の方法のため、避けたいと考えています。
どうしても方法がない場合はオブジェクト型での保持を考えようと思います。
追記2
EventListの内容は以下の通りです。
これをObject A,B,CそれぞれがList<EventList>として保持しています。
cs
1public enum EventList 2{ 3 MoveFowrad, 4 MoveBack, 5 MoveLeft, 6 MoveRight 7}
追記3
省略して記述していたEnumの内容をEventListの内容に置き換えました。
不明点が多く申し訳ございません。また、userisgod様から提案していただいた方法でList<List<EventList>>での取得では以下の画像のようになり、意図する形とは異なるため、引き続き回答を募集させていただきます。
試したコード(取得部分のみ抜粋)
List<List<EventList>>での取得
cs
1 void GetEventsInObject() 2 { 3 EventsForEachObject = new List<List<EventList>>(); 4 5 foreach(GameObject p in Parents) //ParentsにObjectsMGRをセット 6 { 7 var evList = new List<EventList>(); 8 9 foreach(Transform child in p.transform) 10 { 11 List<EventList> enumListData = child.GetComponent<EnumListData>().Events; 12 13 foreach(var ev in enumListData) 14 { 15 evList.Add(ev); 16 } 17 EventsForEachObject.Add(evList); 18 } 19 } 20 }
Classを作成し、List化したものでの取得
cs
1 void GetEvent() 2 { 3 EventsForEachObjects = new List<TestEnumData>(); 4 5 foreach(GameObject p in Parents) 6 { 7 foreach(Transform child in p.transform) 8 { 9 List<EventList> enumListData = child.GetComponent<EnumListData>().Events; 10 11 foreach(var ev in enumListData) 12 { 13 EventsForEachObjects.Add(new TestEnumData(){EventTargetObject = child.gameObject , TargetEvent = ev}); 14 } 15 } 16 } 17 }
回答3件
あなたの回答
tips
プレビュー