В каких методах следует сохранять / загружать состояние игры - PullRequest
1 голос
/ 16 февраля 2012

Есть много статей о том, как сохранить состояние игры, и они довольно хороши. Но у меня есть одно концептуальное недоразумение, куда мне спасти государство?

В моей игре libGDX есть несколько экранов, и пара из них MainMenuScreen и MainSceneScreen они унаследованы от Screen класса MainMenuScreen отображается в начале игры MainSceneScreen чуть позже.

В чем проблема? Я перешел на MainSceneScreen , заставил Android остановить приложение (для этого я изменяю языковые настройки на устройстве). После этого я снова выбираю приложение и вижу MainMenuScreen . Но я хочу, чтобы MainSceneScreen показывался.

Полагаю, мне следует переопределить метод resume. Но какой? У меня есть класс PsGame , который расширяет Game класс libgdx. Я поставил точки останова на его метод resume, и оказалось, что метод не был вызван. Я исследовал проблему и обнаружил этот странный код в методе onResume класса AndroidApplication в libGDX:

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

Мой отладчик сказал, что firstResume истинно и не переходит на graphics.resume () line.

  1. Что я сделал не так?
  2. Какие методы мне следует переопределить?

1 Ответ

1 голос
/ 16 февраля 2012

Я думаю, что вы правильно сузили это, и вам следует восстанавливать свое сохраненное состояние во время вызова метода resume в вашем подклассе Game.Это следует вызывать, если вы ненадолго переключаетесь на какое-то другое приложение, а затем снова переключаетесь на свое приложение (без выполнения шагов, которые приведут к его завершению).По какой-то причине libgdx не пересылает вызов resume для начального запуска (этот проект, вероятно, является хорошей идеей в долгосрочной перспективе, но немного запутывает при запуске).Достаточно просто вызвать код восстановления из метода create в вашем Game (который вызывается только при запуске приложения), чтобы первый запуск вашей игры имел поведение «возобновить».

...