我使用以下代码将用户的分数提交给Google Play游戏:
newScore
但这并没有增加排行榜的得分,只是取代得分。始终显示相同的值。 {{1}}是我希望将当前分数增加的数量。
答案 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);
}
}
});
}