2016-05-10 5 views
1

階層内のオブジェクトを取得する方法は、scripで有効になっていますか?階層内のオブジェクト親を有効にする

void OnCollisionEnter2D (Collision2D colisor) 
    { 
     if (colisor.gameObject.tag == "Floor") { 

      Destroy (gameObject, 0.6f); 

      } else { 

      if (colisor.gameObject.tag == "Bee") { 

       coinCollectSound.Play(); 

       heart = GameObject.FindGameObjectWithTag ("Hearts").GetComponent<Hearts>() as Hearts; 

       if (heart.TakeHeart()) { 
        Destroy (gameObject); 

       } else { 

        //Here i want setActive(true) Object parent in hierarchy called "GameOver"    
        //And setActive(false) Object in hierarchy Called "Game" 

       } 
      } 
     } 
    } 

私はGame Overのために別のシーンを呼びたくはありませんが、今はただ有効にしたいだけです。

答えて

1

GameObject.Find( "GameOver")を使用してGameOverにアクセスする必要がありますが、無効にするとそのことはできません。代わりに、SetActiveしたいオブジェクトを参照する、有効なスクリプト上にPublic GameObject変数を作成します。次に、タイプ別にオブジェクトを見つけ、変数にアクセスして有効にします。

+0

もちろん...私は上記の答えで数時間努力しましたが、私はあなたの方法を試していませんでした –

0

ゲームオブジェクトの親を無効にするにはスクリプトが添付さ:

transform.parent.gameObject.setActive(true); 

特定のゲームオブジェクトは、パブリック変数を使用して取得し、インスペクタでそれらをリンクします。パフォーマンスを向上させるには、GameObject.Findを使用しないでください。

0

これはゲームオーバーオブジェクトがあるので、あなたはおそらく、単にあなたのゲーム内の多くのオブジェクトがある場合

GameObject.Find("GameOver").SetActive(true); 
GameObject.Find("Game").SetActive(false); 

は、しかし、これはパフォーマンスに影響を持つことになります呼び出すと離れて得ることができます。