我想用libgdx製作一個自上而下的2D射擊遊戲。當他們離開屏幕時,我會追蹤和處理很多子彈對象。我在想,我會使用類似保持未命名對象的軌跡
static ArrayList<Bullet> bullets;
跟蹤我的子彈在子彈類,檢查是否有關閉屏幕的任何子彈此數組列表,他們的處置,如果是這樣,和從ArrayList中刪除該項目符號。我想知道這是否是最好的方式來做到這一點。這似乎應該是相當普遍的事情,所以我想確保這是做到這一點的最佳方式。
我想用libgdx製作一個自上而下的2D射擊遊戲。當他們離開屏幕時,我會追蹤和處理很多子彈對象。我在想,我會使用類似保持未命名對象的軌跡
static ArrayList<Bullet> bullets;
跟蹤我的子彈在子彈類,檢查是否有關閉屏幕的任何子彈此數組列表,他們的處置,如果是這樣,和從ArrayList中刪除該項目符號。我想知道這是否是最好的方式來做到這一點。這似乎應該是相當普遍的事情,所以我想確保這是做到這一點的最佳方式。
使用object poo l是更好的方法。
在這種情況下,對象池的想法很簡單,完全適合您的需求。池處理創建和存儲Bullet
對象。你需要做的就是當你需要一個子彈(用戶射擊)時調用游泳池的obtain
方法,並在遊戲中不再需要遊戲時調用遊戲池的回收方法(Goes offscreen)。
這是一個code example來自AndEngine的來源。您可以使用它來了解它是如何工作的,並創建您自己的游泳池課程(或使用此課程)。
這裏是libgdx的池。 http://libgdx.l33tlabs.org/docs/api/com/badlogic/gdx/utils/Pool.html – russjohnson09
兩者都沒有與他們的框架相關聯,所以你可以在任何地方在任何java中使用它們(只有少數調試行AndEngine的池取決於框架..刪除它們) – Jong
我同意使用池來最小化對象創建等。他仍然需要一個* active *項目符號列表來遍歷,但是,不是嗎?除非你將它併入游泳池本身,這兩個游泳池類都不顯示。 – Geobits
'靜態'是有爭議的,這取決於你的項目設置,但總的來說,是的,一串子彈是一個典型的方法來做到這一點。 – Geobits