- 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** 引用的使用示例,您可以使用它透過指令碼引用各個物件,而無需單獨設定它們。
重要的是要理解,銷燬一個遊戲物件並不意味著一個物件會破碎或爆炸。銷燬一個物件只會(並且立即)停止它在遊戲(及其程式碼)中的存在。到此物件的連結及其引用現在已斷開,嘗試訪問或使用其中任何一個通常會導致錯誤和崩潰。