Google

2011年10月21日金曜日

GameObjectに複数のMonoBehaviour

GetComponentの使い方でもう一つ。

以前、GameObjectには複数のスクリプトを追加可能と書きました。
じゃあそれがなんの役に立つかという一例を紹介します。
例えばファクトリーやマネージャクラスなど、全体に絡むクラスが何個がある場合を想定しましょう。
ゲーム内部で目に見えなくても仕事をする必要があるクラスですね。
実際、現場ではこういったクラスの方が重要です。

この時にあの書き方が生きてきます。

これらを一個ずつ丁寧に別々のGameObjectに追加するのもいいですが、せっかくまとめられるのならばそうしたいところです。
ということでサンプルがこちら。

上記のコードは2つ分くっついてますが、上記の2つをそれぞれC#で生成し、一つのGameObjectに紐付けしてください。
やってることは単純、Test1及びTest2で互いの関数をコールしているだけです。
結果は書くまでもないほど簡単ですな。

ここでのポイントですが、自分以外のスクリプトを取り出すのに、自分自身に対してGetComponentしている部分です。
いちいちpublicにしてGUIで紐付けしたり、Findしたりという手間が省けますね。

これなら一つのGameObjectをスクリプトホルダーとして機能させられます。
構造的も簡潔になるので言うことなし。

また、スクリプトを取得する際、GetComponent<クラス名>()でテンプレート変換している点も注目。
ソースコード上でもすっきりと書けます。

0 件のコメント:

コメントを投稿