[Unity3D]Hierarchyに存在するGameObjectを検索する

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 );
}

関連記事

2 Responses to “[Unity3D]Hierarchyに存在するGameObjectを検索する”

  1. より:

    GameObject player = GameObjet.Find( “Player” );
    →GameObject player = GameObject.Find( “Player” );
    で修正お願いします

    • admin より:

      タイプミスの指摘ありがとうございます。
      修正させていただきました。

コメントを残す

メールアドレスが公開されることはありません。