2013年3月31日日曜日

[Unity]GameObject以下のコンポーネントへのアクセス方法


GameObjectコンポーネント以下のコンポーネントのゲームオブジェクトでアクセスする方法



children = gameObject.GetComponentsInChildren();
foreach (Transform item in children) {
 if ( !item.name.Equals(gameObject.name) ) {
  MeshRenderer meshRender = item.gameObject.GetComponent();
  if ( meshRender != null ) meshRender.enabled = _value;
 }
}
などでアクセスする。
ポイントはTransform型でアクセスすること。
基本的に全てのGameObjectはTransformを所有する決まりが有るので、
transformクラスからGameObjectへのアクセスが可能になっている。

アセンブリブラウザで確認すれば解るが、TransformクラスはComponentクラスを継承しているので、様々なオブジェクトを取り扱えるというわけだ。

http://docs-jp.unity3d.com/Documentation/Components/class-Transform.html

◆結論

GameObject=Transformという認識で問題ない。


しかし、スケール値の不均等によるパフォーマンスの問題や制限があるだなんて初めて知った……。

0 件のコメント:

コメントを投稿