我們?cè)谧錾鋼纛惖挠螒虻臅r(shí)候我們經(jīng)常會(huì)用到子彈,我們對(duì)子彈的處理經(jīng)常性的是先把它實(shí)例化出來(lái),然后我們?cè)僮屗苿?dòng)進(jìn)行攻擊唆铐,當(dāng)子彈到超出一定范圍(時(shí)間)或者碰撞到某些東西的時(shí)候的時(shí)候我們就會(huì)把它給摧毀掉淮菠。然后這樣一直實(shí)例遍愿,一直摧毀,在游戲剛開(kāi)始的時(shí)候可能覺(jué)察不到耘斩,但是越到后邊越卡沼填。這就是因?yàn)閷?shí)例和摧毀比較消耗性能。此時(shí)對(duì)待這種情況我們就可以用對(duì)象池括授。
上圖就是對(duì)象池的應(yīng)用流程圖坞笙,我們首先建一個(gè)對(duì)象池(聲明一個(gè)List集合),然后估算我們?cè)趫?chǎng)景中最多會(huì)出現(xiàn)多少個(gè)子彈荚虚,然后我們就在這個(gè)集合中加入相應(yīng)數(shù)量的子彈實(shí)例薛夜,剛開(kāi)始子彈是隱藏的,等到我們用到的時(shí)候我們?cè)诎阉黶etActive(true)版述,然后對(duì)他的位置進(jìn)行設(shè)置梯澜,當(dāng)我們的子彈應(yīng)用結(jié)束(在普通方法里就是要摧毀他的時(shí)候),我們?cè)侔阉O(shè)置為False渴析,回收對(duì)象晚伙。就這樣一直循環(huán)。同時(shí)我們還要用一個(gè)下標(biāo)以方便我們從對(duì)像池中取東西
我們先聲明一個(gè)對(duì)象池俭茧,并把下標(biāo)也給初始化咆疗。
通過(guò)這個(gè)方法向?qū)ο蟪乩镞吋尤胂鄳?yīng)數(shù)量的實(shí)例
調(diào)用對(duì)象池里實(shí)例的時(shí)候,首先判斷下標(biāo)是否超出范圍母债,當(dāng)我們調(diào)用到實(shí)例的時(shí)候也要把下標(biāo)給加1.
當(dāng)我們調(diào)用完以后再把他設(shè)置為隱藏午磁。
我們注意這個(gè)圖的右邊,就是子彈一直在隱藏毡们,顯示之間轉(zhuǎn)換迅皇。
比如我做的這個(gè)飛機(jī)小游戲,他可能子彈要升級(jí)衙熔,那子彈的模型可能就跟原來(lái)的子彈不一樣喧半,此時(shí)我們就需要多創(chuàng)建幾個(gè)對(duì)象池,當(dāng)飛機(jī)要切換子彈類型的時(shí)候青责,直接去切換對(duì)象池就可以了挺据,不要在切換子彈的時(shí)候我們?cè)俳o他創(chuàng)建對(duì)象池,這樣可能會(huì)有點(diǎn)卡頓的現(xiàn)象脖隶。