Sto sviluppando un gioco Android e ho una domanda sulla memorizzazione degli elementi del gioco senza sparare il cestino.
Il mio gioco ha bisogno di una raccolta in cui gli elementi del gioco sono memorizzati in base alle posizioni x, y (tutti gli elementi del gioco hanno x, y, larghezza e altezza). La raccolta viene quindi chiamata ogni frame per recuperare gli elementi in base a cameraX, cameraY, larghezza e altezza della fotocamera (l'utente può scorrere il gioco).
Esempio:
function draw() {
tmp = collection.getElements(tmp,cameraX,cameraY,cameraWidth,cameraHeight);
for(int i = 0; i < tmp.size(); i++) {
tmp.get(i).draw();
}
}
Attualmente sto usando la classe Vector per rappresentare gli elementi della collezione, ma il gc continua a sparare ogni paio di minuti. Faccio tutte le mie allocazioni in anticipo. Ho anche modificato la funzione getElements per accettare un altro parametro: un vettore temp (allocato in anticipo) che viene riempito con elementi e quindi restituito.
Come devo conservare gli elementi del gioco in modo che il gc non si spari (preferisco mai se possibile)?
Inoltre aggiungo elementi alla raccolta durante il runtime, devo allocarli anche in anticipo?