1.對象池Object Pool的原理:
有些GameObject是在游戲中需要頻繁生成並銷毀的(比如射擊游戲中的子彈),以前的常規做法是:Instantiate不斷生成預設件Prefab,然后采用碰撞銷毀,或者定時銷毀,大量創建重復對象造成內存損耗,影響性能還容易產生內存碎片。
所謂對象池,就是針對需要經常生成消失的對象。我們在對象需要消失的時候不Destroy而是SetActive(false),然后放入池子中,當需要再次顯示一個新的對象的時候,先去池子中看有沒有隱藏的對象,有就取出SetActive(true),若池子里沒有可用的則再Instantiate。
2. 兩篇相關的博客幫助理解
(1)https://www.cnblogs.com/yugejuhao/p/7677497.html,它在這里面采用了一個單例模式,這個腳本不需要掛接在任何GameObject上;
(2)https://blog.csdn.net/wangjiangrong/article/details/80196676,采用了一個隊列實現對象池,
3. 效果:有的對象池一上來先生成10個對象,都設為setActive(false),然后按游戲邏輯使用其中為false的對象,轉為true使用,達到條件不再銷毀,再次設置為setActive(false)回到池中,這樣對象的個數始終能保持下來,那內存和性能肯定就上去了!
