【问题标题】:When should I write a snapshot for Google Play Saved Games?我应该什么时候为 Google Play Saved Games 写快照?
【发布时间】:2017-07-18 00:26:52
【问题描述】:
我正在将我的 libGDX android 游戏的保存系统更改为 Google Saved Games,并且我想自动保存和加载快照,因此用户不必记得在卸载之前保存,例如。我的“旧”系统使用本地 json 文件进行存储。我有一个包含播放器当前所有“状态”值的类,并且每次我的用户更改屏幕时我都会将状态保存到文件中。它工作得很好,因为在我的屏幕被破坏之前保存本身就完成了。现在,通过快照的保存过程需要保存机制在AsyncTask 中。一旦用户关闭应用程序(或者它被操作系统关闭),我更愿意写一个保存,但我不知道如何。如果我尝试写入快照,比如说onPause(),写入失败,因为我用于它的GameHelper 对象在异步任务运行时通过其onStop() 方法运行。有没有办法在应用程序退出时编写快照?
【问题讨论】:
标签:
android
android-asynctask
libgdx
google-play-games
【解决方案1】:
在这个 github 论坛中尝试建议的解决方案,How do we save game on pause or quit?:
确保始终保持元数据可用和打开。
首次加载时
- 打开元数据
- 加载游戏
- 再次打开元数据,保持对打开元数据的引用
OnApplicationPause 或 OnApplicationQuit
OnApplicationPause(恢复)
再次打开元数据,保留对打开元数据的引用。通过保持
元数据始终打开,您可以随时保存 OnApplicationPause。
请记住,当游戏恢复时,我们需要再次打开元数据,
因为 CommitUpdate 关闭了我们的元数据 OnApplicationPause。
使用这种方法,你需要做好处理文件冲突的准备
在您的应用程序中几乎无处不在 - 用户可以暂停
随时申请。当应用程序恢复时,您需要打开
元数据 - 在发生任何冲突之前,您无法打开元数据
解决了。
补充一点,如果你想在任意位置保存游戏
时间,(不在 OnApplicationPause 上),那么您将需要:
在任何其他点保存(即:加载屏幕/关卡转换)
CommitUpdate 使用之前打开的元数据
再次打开元数据,保留对打开元数据的引用。