【发布时间】:2015-06-22 14:33:08
【问题描述】:
游戏结束后,会报告分数(reportables 是 GKScore 对象的数组):
GKScore.reportScores(reportables, withCompletionHandler: {(error) -> Void in
if (error != nil) {
Log.INFO("reportScores callback: \(error)")
} else {
Log.INFO("reported score")
self.populate_high_scores(leaderboard)
}
})
populate_high_scores 向GKLeaderboard 发起请求,然后调用获取高分:
request.loadScoresWithCompletionHandler({(scores, error) -> Void in
self.populate_high_scores_handler(scores, error: error)
})
所以要刷新:
- 用户玩游戏。
- 向 GameCenter 报告高分。
- 收到回调,表示成功。
- 向 GameCenter 请求高分。
- 从 GameCenter 获得高分。
从 GameCenter 返回的分数不包括刚刚保存的分数。请注意,在 next 运行时,将返回分数。即当前的高分是 50。用户玩游戏,得分 100。GameCenter 返回 50 分。用户再次玩游戏,得分 150。GameCenter 返回 100 分。
我不确定这是否是 GameCenter 沙盒模式的“功能”,还是我应该解决的问题。
事实上,我正在从 GameCenter 检索正确的分数子集(减去最近设置的分数)。另外,肯定会在GameCenter从reportScores成功返回之后发出高分请求。
【问题讨论】:
-
我刚刚用弹出一个 Game Center 排行榜替换了我的自定义 Game Over 视图/代码,并注意到 Apple 的代码也出现了同样的问题。所以它要么只是沙盒,要么是一个已知的错误。
标签: ios swift game-center