我們知道一個游戲比如跑酷類型的游戲,游戲元素會不斷重復。游戲元素會不斷從屏幕右邊創建出來,當一個元素移出左邊屏幕時,又會消失掉。如果不斷地new 對象,release 對象 會有性能影響。如何優化呢?就涉及到緩存池的概念。
再舉一個例子:一個主角在一個競技場中不斷殺怪。每次有5個怪出現,殺死一個又會出來一個。每次出怪就new 怪,死亡怪就release怪,會很浪費的。已經死亡的怪,我們簡單地給他補滿血不就可以重復使用了嘛!像拍電影,一個人不是真正死亡,只是看起來死了,還是可以重復使用的嘛!
我們可以事先new10個怪放入到一個數組中,簡單把這個數組稱作緩存池,其實就是一個數組。再搞個int的變量表示取數組中第幾個怪,初始化為0,表示取第一個怪。
1.當我們想要從屏幕中創建一個新怪時,不去new,而是用那個int變量從數組中取一個怪拿來用,當然拿來用之后,還要簡單的初始化下,給他補滿血啊,穿上完整衣服等等。再把int變量加1,如果int變量等于數組的長度時,把它歸0。
2.當一個怪被主角殺死時,讓這怪播完死亡動畫后,就remove掉,但不把他完全release掉。
差不多實現就是這樣,簡單吧!只是注意初始緩存池,new對象的數量。一般要大于你實際使用的數量。
上一篇 漢諾塔問題的遞歸實現