【问题标题】: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

    • CommitUpdate 使用之前打开的元数据。

    OnApplicationPause(恢复)

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

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

    补充一点,如果你想在任意位置保存游戏 时间,(不在 OnApplicationPause 上),那么您将需要:

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      相关资源
      最近更新 更多