比賽結束後已經結束,分數(reportables
是GKScore
對象數組)報道:GameCenter的高分不包括最近成立得分
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返回的分數不包括剛剛保存的分數。請注意,在下貫穿,得分將被返回。即當前高分爲50.用戶玩遊戲,分數爲100. GameCenter返回50分。用戶再次玩遊戲,得分爲150. GameCenter返回100分。
我不確定這是GameCenter沙盒模式的「特徵」,還是我應該解決的問題。
實際上,我是從GameCenter中檢索正確的分數子集(減去最近設置的分數)。此外, GameCenter從reportScores
成功返回後,肯定會發出獲得高分的請求。
我剛剛用彈出的Game Center排行榜替換了我的自定義遊戲結束視圖/代碼,並注意到Apple代碼也出現了同樣的問題。所以它只是沙箱或者一個已知的bug。 –