我正在将我的libGDX安卓游戏的保存系统更改为谷歌保存的游戏,我想自动保存和加载快照,因此用户不必记得在卸载之前保存,例如。我的“旧”系统使用本地json文件进行存储。我有一个类,它保存播放器的所有当前“状态”值,每次用户更改屏幕时,我都会将状态保存到文件中。它完美地工作,因为在我的屏幕被摧毁之前,保存本身已经完成。现在,通过快照的保存过程要求保存机制位于AsyncTask
内。一旦用户关闭应用程序(或者它被操作系统关闭),我宁愿写一个保存,但我不知道如何。如果我尝试编写快照,让我们说onPause()
,写入失败,因为我用它的GameHelper
对象在asynctask运行时运行其onStop()
方法。有没有办法在应用程序退出时编写快照?
答案 0 :(得分:0)
在此github论坛中尝试建议的解决方案,How do we save game on pause or quit?:
确保始终保持元数据可用并打开。
首次加载
- 打开元数据
- 加载游戏
- 再次打开元数据,保持对开放元数据的引用
OnApplicationPause或OnApplicationQuit
- 使用以前打开的元数据进行CommitUpdate。
OnApplicationPause(正在恢复)
再次打开元数据,保持对打开元数据的引用。通过保持 元数据始终打开,您可以随时保存OnApplicationPause。 请记住,我们需要在游戏恢复时再次打开元数据, 因为CommitUpdate关闭了我们的元数据OnApplicationPause。
使用此方法,您需要准备好处理文件冲突 几乎在你的应用程序的任何地方 - 用户可以暂停 随时申请。当应用程序恢复时,您需要打开 元数据 - 在发生任何冲突之前,您无法打开元数据 解决。
要添加到此,如果要将游戏保存在任意点 时间,(不在OnApplicationPause上),那么你需要:
在任何其他点保存(即:加载屏幕/级别转换)
使用先前打开的元数据的CommitUpdate 再次打开元数据,保持对打开元数据的引用。