如何通过脚本启用层次结构中的对象?
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"
}
}
}
}
我不想为游戏结束调用不同的场景,但现在我只是想启用它。
答案 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);
但是,如果您的游戏中有许多对象,这会对性能产生影响。