我有一個遊戲中,我需要出示敵人(SKSpriteNodes),其中有從右到飛行路徑離開,在屏幕上。我現在使它像蘋果的冒險遊戲,有兩個陣列:一個活躍的敵人和一個不活躍的;當遊戲需要添加敵人時(通過更新方法),其中一個來自非活動陣列,將其添加爲活動陣列。當敵人完成它沿着屏幕路徑或當它被破壞,我把它從主動陣列,刪除它從它的父,並把它放在不活躍陣列指數0。SpriteKit SKSpriteNodes管理
代碼:
添加敵人:
enemySN = [_asteroidsInactiveMArray lastObject];
[enemySN removeFromParent];
[_asteroidsInactiveMArray removeLastObject];
[_asteroidsActiveMArray addObject:enemySN];
[self addChild:enemySN];
刪除敵人:
[enemySN died];
[_aliensActiveMArray removeObject:enemySN];
[_aliensInactiveMArray insertObject:enemySN atIndex:0];
我的擔心是:現在,10個敵人都夠當前設置,但如果我想要將屏幕上添加的敵人加倍,那麼10就不夠了。
我要保持這種風格,並試圖修改數組的大小時,我沒有任何離開了?我是否應該採取另一種方法並停止使用陣列,並根據需要初始化敵人?
你的問題似乎是你可以使用的精靈池的大小,或者你甚至應該使用精靈池。這取決於你的遊戲,這不是某人將能夠爲你回答的問題。製作你的遊戲,並處理出現的問題。如果您想在實際運行之前瞭解更多關於此主題的內容,您可以谷歌和/或閱讀http://en.wikipedia.org/wiki/Object_pool_pattern – prototypical
感謝您的鏈接。正如其中所述,_在某些情況下,簡單的對象池(不包含外部資源,但僅佔用內存)可能效率不高,可能會降低性能。那麼,我認爲這不是這種情況。這些是SKSpriteNode的自定義類,它們使用圖像加載,物理和初始化構造函數中的不同對象。所以,至少現在,我會像這樣離開它。 –
我認爲這裏所接受的答案是100%,你正在着手進行不成熟的優化。但是,瞭解聯合和它所處的情況以及不適用的情況並沒有什麼不對,因此您知道。 – prototypical