2012-02-15 2 views
1

Il y a beaucoup d'articles sur comment sauvegarder l'état d'un jeu et ils sont plutôt bons. Mais j'ai un malentendu conceptuel où devrais-je sauver l'état?Dans quelle méthode les méthodes devraient-elles être sauvegardées/chargées

jeu My libGDX a nombre d'écrans et deux d'entre eux sont MainMenuScreen et MainSceneScreen ceux-ci sont héritées de l'écran classe. MainMenuScreen est montré au début du jeu le MainSceneScreen peu plus tard.

Quel est le problème? J'ai navigué à MainSceneScreen, forcé Android à arrêter l'application (je modifie les paramètres de langue sur l'appareil pour y parvenir). Après cela, je sélectionne à nouveau l'application et je peux voir MainMenuScreen est montré. Mais je veux MainSceneScreen être montré.

Je suppose que je devrais remplacer la méthode resume. Mais lequel? J'ai la classe PsGame qui s'étend Jeu classe de libgdx. J'ai mis des points d'arrêt à sa méthode resume et il s'est avéré que la méthode n'a pas été appelée. J'ai étudié le problème et je l'ai trouvé ce code étrange dans la méthode onResume de AndroidApplication classe libGDX:

if (!firstResume) 
     graphics.resume(); 
    else 
     firstResume = false; 

Mon débogueur dit firstResume était vrai et ne pas aller à graphics.resume ( ligne.

  1. Qu'est-ce que j'ai fait de mal?
  2. Quelles méthodes devrais-je remplacer?
+1

Essayez à la place de votre Q à http://gamedev.stackexchange.com/ à la place :) –

+0

LOL - vous l'avez déjà fait: o) –

Répondre

1

Je pense que vous avez réduit ce bas correctement, et vous devez restaurer vos état enregistré lors de l'appel de méthode resume sur votre sous-classe Game. Cela devrait être appelé si vous passez un peu à une autre application, puis revenez à votre application (sans passer par les étapes qui entraîneront la fin de l'application). Pour une raison quelconque, libgdx ne transfère pas l'appel resume pour le démarrage initial (cette conception est probablement une bonne idée à long terme, mais elle est un peu déroutante au démarrage). Il est assez facile d'invoquer votre code de restauration à partir de la méthode create dans votre Game (qui est invoqué uniquement au démarrage de l'application) pour que le premier démarrage de votre jeu ait un comportement de reprise.

Questions connexes