Google

2011年10月24日月曜日

子GameObjectに順次アクセス

以前の回では、他のGameObjectにアクセスする方法を色々書きました。
その関係でちょっと追記というか補足。

ゲームを作っていくと、GameObjectはバラバラに存在するというケースはさほど多く有りません。
実際は階層構造になっていて、それをまとめる大きなものが何個かあるはずです。
別にでかいケースだけではなく、簡単な場合でもよくあります。
例えば、動きまわるキャラを作ったとして、そいつが武器や装備を持ってパワーアップするとします。
銃を撃つときにその銃が光ったり反動を表現したりリロードしたりとか、いろいろあるはず。
それが自分じゃなくていっぱい居る敵だとしたら、GUIから指定するにも結構たいへんです。

そう考えると、必ず入れ子のGameObjectがあって、自分の子にアクセスするというケースが出てくるでしょう。
そんな時にはどうするかというと、、、、。

以前書いたGUIからの指定やFind、これはもう説明しました。
今回はTransformを使った入れ子へのアクセスです。
これがサンプル。

Transformはparentメンバを持っているのですが、さらに子供も持つという二重アクセス構造。
それを利用し取り出すことができます。
foreachができるのは、IEnumerableを実装しているため。
イテレータとして順次取り出せるので、後はタグ付なり名称付なり、取り決めを自分で行うことで、判断させることが可能です。

しかしforeachを毎回させれば遅くなるのは当然。
動的に生成破棄するゲームであっても、こういう事をしなくていいように、予めメンバ変数に設定しておいてその分のコストを減らすようにするのが普通かと。

0 件のコメント:

コメントを投稿