2016-04-18 16 views
5

Ecco il mio caso. Ho tre diversi tipi di schermi:libGDX: è meglio riutilizzare le schermate o creare nuove istanze ogni volta?

  1. MainMenuScreen
    • ha un pulsante "Start" per passare al GameScreen. Inoltre, consente al giocatore di modificare le impostazioni di base del gioco.
  2. GameScreen
    • Il gioco giocabile attuale (in cui viene eseguita lettore di caratteri e salti).
  3. GameOverScreen
    • schermo che riproduce un'animazione e quindi visualizza un menu che permette al giocatore di iniziare il gioco ancora una volta (cioè interruttore per GameScreen) o tornare al menu principale (vale a dire passare a MainMenuScreen).

sono io meglio memorizzare i miei schermi nelle variabili e riutilizzare loro quando passo a schermi, o è meglio di disporre di ogni schermo quando ho finito con esso e quindi creare una nuova istanza del tipo di schermo che intendo passare?

E la risposta sarà diversa in un caso in cui la commutazione dello schermo è più frequente (come tra uno schermo del mondo virtuale e uno schermo di battaglia in un gioco come Final Fantasy o Pokemon)?

Grazie!

risposta

5

A mio parere è necessario riutilizzare Screen s, che vengono utilizzati frequentemente e smaltire e ricreare Screen s non utilizzato così spesso.
Nel tuo esempio il GameScreen, GameOverScreen e MainMenuScreen dovrebbero essere tutti riutilizzati, in quanto sono direttamente collegati tra loro:
Non appena un giocatore inizia un gioco, è possibile, che muore. Quindi viene mostrato lo GameOverScreen e subito dopo viene mostrato lo MainMenuScreen. Quindi l'utente non ha bisogno di passare a quelli Screen s manualmente.
Il OptionsScreen invece, potrebbe essere smaltito e ricreato ogni volta, perché di solito si apre il OptionScreen solo poche volte. Inoltre, non è collegato direttamente a nessun altro Screen, ma l'utente deve "forzare" il gioco per aprire OptionScreen. Ma finché non ci sono troppi Screen s, il riutilizzo non dovrebbe essere un problema.
Nel secondo esempio, gli Screen vengono utilizzati anche più spesso, quindi devono essere riutilizzati definitivamente.

EDIT:
Come accennato @EssEllDee, si dovrebbe anche fare uso di hide() e show(). Questi metodi vengono richiamati da Libgdx, quando si cambia lo Screen e possono essere utilizzati per disporre/ricreare risorse pesanti. Ad esempio, è possibile disporre di Texture s utilizzati per il gioco, quando si passa a GameOverScreen e li si ricarica, quando si passa a GameScreen.

+2

Oltre a ciò, utilizzare i metodi 'onHide()' e 'onShow()', che vengono richiamati automaticamente. – EssEllDee

+2

@EssEllDee hai ragione. Questi metodi possono essere usati per disporre/ricreare risorse "pesanti". – Springrbua

+0

Grazie per la risposta! – hithere

Problemi correlati