- Unity 教程
- Unity - 首页
- Unity - 简介
- Unity - 安装和设置
- Unity - 创建精灵
- Unity - 修改精灵
- 变换和对象父子关系
- Unity - 内部资源
- Unity - 保存和加载场景
- Unity - 基本移动脚本
- Unity - 理解碰撞
- Unity - 刚体和物理
- Unity - 自定义碰撞边界
- 理解预制体和实例化
- Unity - 游戏对象销毁
- Unity - 协程
- Unity - 控制台
- Unity - 音频入门
- Unity - UI 初体验
- Unity - 按钮
- Unity - 文本元素
- Unity - 滑块
- Unity - 材质和着色器
- Unity - 粒子系统
- Unity - 使用资源商店
- Unity 有用资源
- Unity - 快速指南
- Unity - 有用资源
- Unity - 讨论
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。
现在,我们将创建一个新的六边形精灵,并将我们的脚本附加到它。接下来,右键单击层次结构中的游戏对象并选择 **复制**。一个新的精灵将在层次结构中创建;您应该使用 **移动** 工具重新定位它。重复这些步骤以创建类似的六边形。
单击每个六边形,查看其脚本组件。您现在可以设置各个键,以便游戏对象在按下该键时自行销毁。例如,让我们创建 5 个六边形,并将其设置为在按下 A、S、D、F 和 G 键时销毁。
您可以在多个六边形上设置相同的键,它们都将在按下该键时同时销毁自身;这是一个 **gameObject** 引用的使用示例,您可以使用它通过脚本引用各个对象,而无需单独设置它们。
相同的键可以设置在多个六边形上,它们都将在按下该键时同时销毁自身;这是一个 **gameObject** 引用的使用示例,您可以使用它通过脚本引用各个对象,而无需单独设置它们。
重要的是要理解,销毁一个游戏对象并不意味着一个对象会破碎或爆炸。销毁一个对象只会(并且立即)停止它在游戏(及其代码)中的存在。到此对象的链接及其引用现在已断开,尝试访问或使用其中任何一个通常会导致错误和崩溃。