如何一次销毁多个游戏对象?

时间:2019-09-10 00:45:21

标签: c# unity3d

我试图弄清楚我基本上如何能站在压力板上并使某些东西消失。我有工作来销毁与您互动的对象,但没有找到解决方案以销毁另一个对象。

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.CompareTag("PressurePlate"))
    {
      Destroy(collision.gameObject.CompareTag("tree"));
    }
}

1 个答案:

答案 0 :(得分:2)

Destroy(Object)接收一个对象,更具体地说,是一个组件或一个游戏对象;
(尽管您尝试销毁一个布尔值(如在这种情况下所做的那样,什么也不会发生;尽管如此)可以解决这个问题。)

如果您想销毁与之碰撞的游戏对象,Destroy(collision.gameObject)会做到。

如果您想销毁带有特定标签的所有GameObject,可以执行GameObject.FindGameObjectsWithTag(tag),如下所示:

foreach (var gameObj in GameObject.FindGameObjectsWithTag("Your target tag")){
  Destroy(gameObj);
}

还有其他一些方法,例如Object.FindObjectsOfType(Type),可用于获取具有特定类型的所有游戏对象。

但是,由于它们通常运行缓慢,因此除非需要,我不建议您使用它们;
您可以考虑先将相应的游戏对象缓存在某个位置,然后再销毁它们。