如何限制到最大值。在 Google Play 游戏服务排行榜 API 中提交 1x 分数?

Posted

技术标签:

【中文标题】如何限制到最大值。在 Google Play 游戏服务排行榜 API 中提交 1x 分数?【英文标题】:How to limit to max. 1x Score Submission in Google Play Game Services leaderboard API? 【发布时间】:2015-08-18 20:31:12 【问题描述】:

我的应用正在使用 Google Play 游戏服务排行榜 API。 到目前为止,一切似乎都很好。

我现在一直在试图弄清楚如何为每个玩家设置分数提交的最大限制。 我不是在谈论只在排行榜上显示用户一个最高分!!!

这个特定的排行榜是基于玩家第一次玩的分数! 我想让每个人都只有最大值。一杆得分,他们可以得到最好的分数。一旦提交了分数,就绝对没有办法提交更好的分数了!!!

我该怎么做?我知道我可以以糟糕的方式做到这一点,通过 sharedPrefs 使用布尔值,但这仅在播放器不重新安装应用程序或清除应用程序数据时才有效。

我不知道该怎么做。我希望 Google Play 游戏服务中有一些我可以使用的魔术技巧,否则我需要在线执行此操作 - 从服务器上传和下载变量。我真的希望我不必走这条路,有人有更好的解决方案吗?

谢谢

【问题讨论】:

【参考方案1】:

我认为最好的解决方案是两者都做 :) 提交分数后,请使用本地 sharedPrefs 进行检查,这比使用 loadCurrentPlayerLeaderboardScore() 之类的 ping 服务器要快得多

if (lastSubmittedScore() == null)  // read from local prefs, null if not set.
    // call Server
    PendingResult<Leaderboards.LoadPlayerScoreResult> result =
        Games.Leaderboards.loadCurrentPlayerLeaderboardScore(mGoogleApiClient, leaderboardId,
        TIME_SPAN_ALL_TIME, COLLECTION_PUBLIC);

    if (result.await().getScore() == null) 
        // no score - submit it
        Games.Leaderboards.submitScore(mGoogleApiClient,leaderboardId, firstScore);
        // write out locally, that we scored
        saveLastSubmittedScore(firstScore);
    

【讨论】:

如果玩家正在重新安装应用程序或清理手机上的本地保存文件怎么办?这有点冒险,sry :( 重装什么的情况下,分数就没有了,所以会检查服务器。如果您对此非常担心,可以跳过本地缓存步骤并始终检查服务上的排行榜。

以上是关于如何限制到最大值。在 Google Play 游戏服务排行榜 API 中提交 1x 分数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Firebase 帐户关联到 Google Play 游戏帐户

如何从 Google Play 游戏服务排行榜中删除被黑分数?

如何将 Google Play 游戏服务添加到 AIR Game AS3?

Google Play 游戏服务中的多人游戏 API 将不再可用。如何迁移到 Firebase?

如何在 Unity 中添加 Google Play 游戏注册脚本

检测用户退出 Google Play 游戏登录