Unity - 游戏对象销毁



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

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

现在,让我们尝试创建 5 个六边形,当按下分配的键时,它们会自行销毁。

让我们创建一个名为 **HexagonDestroyer** 的新脚本并在 Visual Studio 中打开它。我们将首先创建一个公共的 **KeyCode** 变量。KeyCode 用于指定标准键盘上的一个键,Input 类在其方法中使用它。通过将此变量设为公共变量,就像我们之前对 Rigidbody 和预制体所做的那样,我们可以通过编辑器访问它。当变量设为公共变量时,我们不需要将诸如“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**(大写 G 和 O)是包含所有游戏对象的 **类**,并提供标准方法,如 Instantiate、Destroy 和获取组件的方法。

  • **gameObject**(小写 g 和大写 O)是 GameObject 的特定 **实例**,用于引用当前附加此脚本的游戏对象。

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

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

Hexagon sprite Creation

Move Tool Hexagon Creation

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

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

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

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

广告