在Google Play游戏中更新(递增/递减)排行榜得分

时间:2017-04-16 06:46:13

标签: android android-studio google-play-services google-play-games

我使用以下代码将用户的分数提交给Google Play游戏:

newScore

但这并没有增加排行榜的得分,只是取代得分。始终显示相同的值。 {{1}}是我希望将当前分数增加的数量。

2 个答案:

答案 0 :(得分:2)

您需要使用SharedPreferences在本地保存当前分数,然后将新的分数提交给Google Play游戏服务。请查看Google Play游戏团队的this示例,特别是他们使用AccomplishmentsOutbox,他们将分数存储在本地,直到将其传输到API。

答案 1 :(得分:1)

这是我用来增加Google Play服务排行榜的一种方法。如果返回的分数为空,则分数为1。否则,当前分数将增加1。例如,这对于跟踪每日分数很有用。请注意使用TIME_SPAN_DAILY来指示所需的时间跨度。假设设置排行榜时显示“越高越好”,这将检索当天发布的最高分数。

     private void incrementDailyLeaderboard(final LeaderboardsClient leaderboardsClient, final String leaderboardId) {

    leaderboardsClient.loadCurrentPlayerLeaderboardScore(
            leaderboardId,
            LeaderboardVariant.TIME_SPAN_DAILY,
            LeaderboardVariant.COLLECTION_PUBLIC
    ).addOnSuccessListener(this, new OnSuccessListener<AnnotatedData<LeaderboardScore>>(){
        @Override
        public void onSuccess(AnnotatedData<LeaderboardScore> leaderboardScoreAnnotatedData) {
            //Log.v("onSuccess","onSuccess");
            if (leaderboardScoreAnnotatedData != null) {
                long score = 0;
                if (leaderboardScoreAnnotatedData.get() != null) {
                    score = leaderboardScoreAnnotatedData.get().getRawScore();
                    //Log.v("Your score is", Long.toString(score));
                }
                leaderboardsClient.submitScore(leaderboardId, ++score);
            }
        }
    });
}