在层次结构中启用对象Parent

时间:2016-05-10 20:25:48

标签: c# unity3d unityscript unity5 unity3d-2dtools

如何通过脚本启用层次结构中的对象?

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"

                }
            }
        }
    }

我不想为游戏结束调用不同的场景,但现在我只是想启用它。

3 个答案:

答案 0 :(得分:1)

您应该使用GameObject.Find(&#34; GameOver&#34;)访问GameOver,但如果它被禁用,您将无法做到这一点。相反,在启用的脚本上创建一个公共GameObject变量,该脚本引用您想要SetActive的对象。然后,按类型查找对象并访问它的变量,启用它。

答案 1 :(得分:0)

要禁用GameObject的父级,请附加脚本:

transform.parent.gameObject.setActive(true);

要获取特定的GameObjects,请使用公共变量并在Inspector中链接它们。要提高性能,请避免使用GameObject.Find。

答案 2 :(得分:0)

由于这是一个游戏对象,你可以通过简单地调用

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

但是,如果您的游戏中有许多对象,这会对性能产生影响。