Unityで、スクリプトからGameObjectや、ほかのコンポーネントを検索する方法です。
GameObjectの検索方法
名前を指定して検索する場合
GameObject player = GameObject.Find( "Player" ); |
タグを指定して検索する場合
GameObject player = GameObject.FindGameObjectWithTag( "Tag_Player" ); |
ルートのGameObjectを取得する
GameObject parent = transform.root.gameObject; |
メインカメラのGameObjectを取得する
GameObject camera = Camera.main; |
Componentの検索方法
検索したGameObjectから、GameObjectが持っているComponentを検索する
PlayerScript playerScript = player.getComponent<PlayerScript>(); playerScript.AddHp( 100 ); |
Componentが既に分かっている状態で、自分のコンポーネントが属するGameObjectの他コンポーネントを検索する(衝突判定などでよく使う)
void OnTrigerEnter2D( Collider2D target ) { if ( target.tag == "bullet" ) { BulletScript bulletScript = target.gameObject.GetComponent<BulletScript>(); int Damage = bulletScript.getDamage(); } } |
特定のクラスのGameComponentを取得する
Button curBtn = FindObjectOfType<Button>(); |
特定のクラスのGameComponentを、すべて取得する。
Activeでは無いものまで取りたい場合は、FindObjectsOfTypeAll()を使う。
foreach (Button curBtn in FindObjectsOfType<Button>()) { Debug.Log ( "ボタン名 :" + curBtn.name ); } |
関連記事
GameObject player = GameObjet.Find( “Player” );
→GameObject player = GameObject.Find( “Player” );
で修正お願いします
タイプミスの指摘ありがとうございます。
修正させていただきました。