有很多关于如何保存游戏状态的文章,它们非常好。但我有一个概念上的误解,我应该在哪里拯救国家?
我的libGDX游戏有多个屏幕,其中一对是 MainMenuScreen 和 MainSceneScreen ,它们都是从 Screen 类继承的。 MainMenuScreen 在游戏开始时显示 MainSceneScreen 稍晚。
有什么问题?我导航到 MainSceneScreen ,强制Android停止应用程序(我更改了设备上的语言设置以实现此目的)。之后我再次选择应用程序,我可以看到 MainMenuScreen 。但是我希望显示 MainSceneScreen 。
我想我应该覆盖resume
方法。但是哪一个?我有类 PsGame ,它扩展了 Game 类的libgdx。我将断点放在resume
方法中,结果证明该方法未被调用。我调查了这个问题,我在libGDX的 AndroidApplication 类的onResume
方法中发现了这个奇怪的代码:
if (!firstResume)
graphics.resume();
else
firstResume = false;
我的调试器说 firstResume 是真的,没有去 graphics.resume()行。
答案 0 :(得分:1)
我认为您已正确缩小此范围,并且您应该在resume
子类的Game
方法调用期间恢复已保存的状态。如果您稍微切换到某个其他应用程序,然后切换回您的应用程序(无需执行将导致应用程序终止的步骤),则应调用此方法。无论出于何种原因,libgdx都没有转发初始启动的resume
调用(从长远来看,这个设计可能是一个好主意,但在开始时有点混乱)。它很容易从您create
中的Game
方法调用您的恢复代码(仅在应用程序启动时调用),以便让您的游戏首次启动以恢复'行为。