首页 > 解决方案 > 如何一次销毁多个游戏对象?

问题描述

我试图弄清楚我如何能够基本上站在压力板上并让阻碍的东西消失。我正在努力销毁您与之交互的对象,但没有找到任何解决方案来销毁另一个对象。

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

标签: c#unity3d

解决方案


Destroy(Object)接受一个对象,更具体地说,一个组件或一个游戏对象;
(尽管如果您尝试破坏布尔值,就像您在这种情况下所做的那样,但不会发生任何事情;尽管有人可以纠正我。)

如果你想摧毁它所碰撞的游戏对象,Destroy(collision.gameObject)那就去做吧。

如果你想销毁所有带有特定标签的游戏​​对象,你可以这样做GameObject.FindGameObjectsWithTag(tag),像这样:

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

还有一些其他方法Object.FindObjectsOfType(Type),您可以使用它们来获取具有特定类型的所有游戏对象。

但是由于它们通常很慢,因此除非您需要,否则我不强烈建议您使用它们;
您可以考虑先在某处缓存相应的游戏对象,然后再销毁它们。


推荐阅读