我应该何时为Google Play保存的游戏撰写快照?

时间:2017-07-18 00:26:52

标签: android android-asynctask libgdx google-play-games

我正在将我的libGDX安卓游戏的保存系统更改为谷歌保存的游戏,我想自动保存和加载快照,因此用户不必记得在卸载之前保存,例如。我的“旧”系统使用本地json文件进行存储。我有一个类,它保存播放器的所有当前“状态”值,每次用户更改屏幕时,我都会将状态保存到文件中。它完美地工作,因为在我的屏幕被摧毁之前,保存本身已经完成。现在,通过快照的保存过程要求保存机制位于AsyncTask内。一旦用户关闭应用程序(或者它被操作系统关闭),我宁愿写一个保存,但我不知道如何。如果我尝试编写快照,让我们说onPause(),写入失败,因为我用它的GameHelper对象在asynctask运行时运行其onStop()方法。有没有办法在应用程序退出时编写快照?

1 个答案:

答案 0 :(得分:0)

在此github论坛中尝试建议的解决方案,How do we save game on pause or quit?

  

确保始终保持元数据可用并打开。

     

首次加载

     
      
  • 打开元数据
  •   
  • 加载游戏
  •   
  • 再次打开元数据,保持对开放元数据的引用
  •   
     

OnApplicationPause或OnApplicationQuit

     
      
  • 使用以前打开的元数据进行CommitUpdate。
  •   
     

OnApplicationPause(正在恢复)

     

再次打开元数据,保持对打开元数据的引用。通过保持   元数据始终打开,您可以随时保存OnApplicationPause。   请记住,我们需要在游戏恢复时再次打开元数据,   因为CommitUpdate关闭了我们的元数据OnApplicationPause。

     

使用此方法,您需要准备好处理文件冲突   几乎在你的应用程序的任何地方 - 用户可以暂停   随时申请。当应用程序恢复时,您需要打开   元数据 - 在发生任何冲突之前,您无法打开元数据   解决。

     

要添加到此,如果要将游戏保存在任意点   时间,(不在OnApplicationPause上),那么你需要:

     

在任何其他点保存(即:加载屏幕/级别转换)

使用先前打开的元数据的CommitUpdate 再次打开元数据,保持对打开元数据的引用。