Unity - 游戏对象销毁

游戏对象的销毁与实例化同样重要。在本章中,我们将学习如何销毁游戏对象。

幸运的是,销毁游戏对象与创建它们一样简单。您只需要引用要销毁的对象,并以此引用作为参数调用 Destroy() 方法。

现在,让我们尝试制作 5 个六边形,当按下指定的键时,它们会自行销毁。

让我们创建一个名为 HexagonDestroyer 的新脚本并在 Visual Studio 中打开它。我们将首先创建一个公共 KeyCode 变量。KeyCode 用于指定标准键盘上的按键,Input 类在其方法中使用它。通过将此变量设为公开,就像我们之前对 Rigidbody 和 Prefabs 所做的那样,我们可以通过编辑器访问它。当变量设为公开时,我们不需要将诸如"KeyCode.A"之类的值硬编码到代码中。代码可以灵活地处理任意数量的对象。

public class HexagonDestroyer : MonoBehaviour {
   
   public KeyCode keyToDestroy;

   // Update is called once per frame
   void Update () {
      
      if (Input.GetKeyDown(keyToDestroy)) {
         Destroy (gameObject);
      }
   }
}

观察我们如何在方法中使用名为"gameObject"(小写 g,大写 O)的变量。这个新的 gameObject 变量(类型为 GameObject)用于引用此脚本所附加到的 gameObject。如果您将此脚本附加到多个对象上,则只要涉及此变量,它们都会以相同的方式做出反应。

但是,不要混淆这两者。

  • GameObject,大写 G 和 O,是包含所有 GameObject 的,并提供标准方法,如 Instantiate、Destroy 和获取组件的方法。

  • gameObject,小写 g 和大写 O,是 GameObject 的特定实例,用于引用此脚本当前附加到的 gameObject。

现在让我们编译代码,然后返回 Unity。

现在,我们将创建一个新的六边形精灵,并将脚本附加到它。接下来,右键单击层次结构中的 gameObject,然后选择Duplicate。在层次结构中创建了一个新的精灵;您应该使用 移动 工具重新定位它。重复这些步骤以创建类似的六边形。

六边形精灵创建

移动工具六边形创建

单击每个六边形并查看它们的脚本组件。您现在可以设置各个键,以便 GameObject 在按下该键时自我毁灭。例如,让我们创建 5 个六边形,并将它们设置为在按下 A、S、D、F 和 G 键时销毁。

您可以在多个六边形上设置相同的键,当按下该键时,它们都会同时自我毁灭;这是使用 gameObject 引用的示例,您可以使用该引用通过脚本引用单个对象,而无需单独设置它们。

可以在多个六边形上设置相同的键,按下该键时它们都会同时销毁;这是使用 gameObject 引用的示例,您可以使用该引用通过脚本引用单个对象,而无需单独设置它们。

重要的是要理解,销毁 GameObject 并不意味着对象会破碎或爆炸。就游戏(及其代码)而言,销毁对象将立即(立即)停止其存在。指向此对象及其引用的链接现已断开,尝试访问或使用其中任何一个通常会导致错误和崩溃。