Unity Destroy函數可以銷毀GameObject對象,可以銷毀該對象上的任意組件,也包括相機,音頻源等。
一、基本使用方法
銷毀GameObject對象的基本函數是Destroy。可以直接調用Destroy銷毀一個GameObject對象。如果需要延遲銷毀,則可以使用Destroy函數的第二個參數來設置。代碼示例如下:
Destroy(gameObject); // 直接銷毀gameObject對象 Destroy(gameObject, 2); // 延遲2秒後銷毀gameObject對象
當然,也可以使用DestroyImmediate函數來立即銷毀GameObject對象。代碼示例如下:
DestroyImmediate(gameObject); // 立即銷毀gameObject對象
二、銷毀組件
有時候我們需要銷毀某個GameObject上的某個組件,比如銷毀相機,可以調用GameObject的GetComponent方法獲取到該GameObject上的相機組件,然後銷毀。代碼示例如下:
Camera cam = gameObject.GetComponent(); Destroy(cam);
三、通過標籤批量銷毀對象
有時候我們需要批量銷毀所有帶有相同標籤的對象,可以使用GameObject的FindGameObjectsWithTag方法獲取所有帶有指定標籤的對象,然後遍歷銷毀。代碼示例如下:
GameObject[] gos = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject go in gos)
{
Destroy(go);
}
四、銷毀Prefab預製體
銷毀Prefab預製體需要用到Instantiate函數,需要先實例化創建一個Prefab預製體對象,然後銷毀該對象。代碼示例如下:
GameObject obj = Instantiate(prefab) as GameObject; Destroy(obj);
五、銷毀資源文件
使用Resources.Load加載的資源文件也可以通過Destroy銷毀。代碼示例如下:
GameObject obj = Resources.Load("Prefabs/Enemy") as GameObject;
Destroy(obj);
六、銷毀自己
當一個腳本掛載在GameObject對象上時,也可以通過Destroy銷毀自身。代碼示例如下:
Destroy(this.gameObject);
七、注意事項
1、永遠不要嘗試銷毀Unity內置對象。這是因為Unity內置對象沒有Destroy方法,並且它們是在Unity的核心中創建的,不應該被銷毀。
2、在銷毀對象之前,建議在腳本中取消所有引用。即先清理腳本引用,如事件委託等。這可以幫助避免潛在的內存泄漏。
3、如果需要在銷毀對象時執行一些清理工作,如釋放資源等,可以實現MonoBehaviour的OnDestory方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/271607.html
微信掃一掃
支付寶掃一掃