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