【发布时间】:2014-05-13 00:40:39
【问题描述】:
我正在开发一款多层次的 Android 游戏,我想在登录后获得高分。 我正在这样做:
Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]),
LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC)
.setResultCallback(this);
但是回调没有给我排行榜ID:
@Override
public void onResult(LoadPlayerScoreResult res) {
}
我只得到分数 (res.getScore())。
那么我必须为我的 25 个关卡中的每一个都创建回调还是有更好的解决方案?
这也不行:
for (int i = 0; i < 25; i++)
Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]),
LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC)
.setResultCallback(new ResultCallback<LoadPlayerScoreResult>() {
@Override
public void onResult(LoadPlayerScoreResult res) {
// can't use variable i here
}
});
【问题讨论】:
-
我认为你的方法不对。如果您已经拥有排行榜 ID,为什么还需要它。您正在将它输入到方法中,为什么需要它回来。
-
因为我必须知道我得到了哪个结果(对于第一种方法,使用一个 onResult 侦听器)。当然,如果我复制 25 次,我知道排行榜 ID,但应该有比这更好的解决方案。
-
那么你的目标到底是什么,你想以最有效的方式从 25 个不同的排行榜中获取玩家的分数?
-
完全正确,无需复制相同的语句 25 次,只需更改排行榜 id 索引;)
-
在这种情况下,只需使用您输入的 for 循环。它有什么问题?
标签: android google-play-services google-play-games