Unity - 游戏对象销毁


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

幸运的是,销毁游戏对象和创建游戏对象一样容易。您只需要一个对要销毁的对象的引用,并以此引用作为参数调用Destroy()方法。

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

让我们创建一个名为HexagonDestroyer的新脚本并在 Visual Studio 中打开它。我们将从创建一个公共KeyCode变量开始。KeyCode 用于指定标准键盘上的键,Input 类在其方法中使用它。通过公开此变量,就像我们之前对 Rigidbody 和 Prefab 所做的那样,我们可以通过编辑器访问它。当变量公开时,我们不需要将“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)用于引用此脚本所附加的游戏对象。如果将此脚本附加到多个对象上,则每当涉及此变量时,它们都会以相同的方式做出反应。

但是,不要混淆两者。

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

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

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

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

六边形精灵创建

移动工具六边形创建

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

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

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

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