2023年4月1日 星期六

【Unity】Destroy()和 DestroyImmediate()有什麼不同?

Destroy();會在接收到指令後的當前幀結束後才將GameObject物件刪除(設置為Null)

DestroyImmediate();則是會在接收到指令後,立刻就刪除掉GameObject物件,不會等到當前幀結束後才進行。

然而根據官方文件說明,DestroyImmediate()這個函數應該只在編寫編輯器代碼時使用,因為延遲銷毀永遠不會在編輯模式下被調用。在遊戲代碼中,應該改用Object.Destroy。銷毀總是被延遲(但在同一幀內執行)。小心使用此功能,因為它會永久破壞資產!另要注意,永遠不要遍歷數組並銷毀正在遍歷的元素。這將導致嚴重的問題(不僅僅是在 Unity 中,而是在一般的語法編輯中都不要這樣做)。

https://docs.unity3d.com/ScriptReference/Object.DestroyImmediate.html

沒有留言: