Destroy();會在接收到指令後的當前幀結束後才將GameObject物件刪除(設置為Null)
而DestroyImmediate();則是會在接收到指令後,立刻就刪除掉GameObject物件,不會等到當前幀結束後才進行。
然而根據官方文件說明,DestroyImmediate()這個函數應該只在編寫編輯器代碼時使用,因為延遲銷毀永遠不會在編輯模式下被調用。在遊戲代碼中,應該改用Object.Destroy。銷毀總是被延遲(但在同一幀內執行)。小心使用此功能,因為它會永久破壞資產!另要注意,永遠不要遍歷數組並銷毀正在遍歷的元素。這將導致嚴重的問題(不僅僅是在 Unity 中,而是在一般的語法編輯中都不要這樣做)。
https://docs.unity3d.com/ScriptReference/Object.DestroyImmediate.html
沒有留言:
張貼留言