銷毀物體:Destroy、DestroyImmediate、DestroyObject


原文鏈接:https://blog.csdn.net/NCZ9_/article/details/84203714

參考鏈接:https://blog.csdn.net/lee514/article/details/80995048

方法一:GameObject.Destroy(游戲物體(gameObject類型));

GameObject.Destroy(gameObject,2.0f);

Destory是靜態方法,用類名加點的形式調用

方法中有兩個參數

gameObject表示要銷毀的游戲對象自身

2.0f表示2秒后銷毀,可以任意指定時間

也可以用隨機數函數生成隨機的銷毀時間,例如:Random.Range(1.0f,5.0f),表示1到5秒之間的秒數銷毀游戲對象。

方法二:GameObject.DestroyImmediate(游戲物體(gameObject類型));

方法三:GameObject.DestroyObject(游戲物體(gameObject類型));

方法在腳本繼承MonoBehaviour時可直接使用,無需通過GameObject調用。

  • DestroyImmediate立即銷毀目標,並將目標置為null,且將目標的所有上層引用置空。
  • Destroy則在本幀結束前,渲染之前銷毀目標和上層引用。不會立即銷毀,Destroy調用后,目標數據仍然存在,不為null,上層引用也正常。注意:在同一幀,會出現前面代碼已經用Destroy銷毀了某物體,但后面仍然能夠獲取到的情況。就是因為Destroy在下一幀才會完成銷毀操作。如果立即銷毀,則使用DestroyImmediate。
  • 推薦使用Destroy代替DestroyImmediate,原因是DestroyImmediate是立即銷毀,立即釋放資源,做這個操作的時候,會消耗很多時間,影響主線程運行。Destroy是異步銷毀,一般在下一幀銷毀,不會影響主線程的運行




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM