2014年12月31日水曜日

GetComponentsInChildren経由で子のGameObjectをListで取得

GetComponentsInChildrenはTransformの配列で返してくるので、LinqでGameObjectの参照を拾いつつListにする。
何回も使う人は拡張メソッドにするといいかも?

List<GameObject> objects = GetComponentsInChildren<Transform>()
                            .Select(trs => trs.gameObject)
                            .ToList();

Linq習い中なのでSelectがよくわからず、最初はTransform[]で取った後ForEachでListにいちいちAddするとかいうスーパーバカな方法で無理やりやっていました。
これですっきり。

MonoBehaviourを継承しているクラスなら、こんなことせんでも

List<MyClass> myClassList = GetComponentsInChildren<MyClass>().ToList();

でOK。

0 件のコメント:

コメントを投稿