【发布时间】:2018-02-07 00:36:59
【问题描述】:
我有一个问题,请帮助我理解主题。老实说,我已经花了几天时间研究这个主题,但它还没有奏效。
SpriteKit 上有一个简单的游戏,Swift 3。
我正在尝试实现排行榜游戏中心。
iTunes Connect 已设置,排行榜已创建,测试用户已创建。
当我开始游戏时,用户按照他们应该登录的方式登录。显示创建的棋盘的按钮,我可以在 Game Center 中打开我的排行榜。
问题是排行榜中得分的值没有更新。
我的游戏分数存储在变量“score”中 在 gamescene.swift 中,我有两个函数用于保存和覆盖:
func saveHighscore(gameScore: Int) {
if GKLocalPlayer.localPlayer().isAuthenticated {
print("\n Success! Sending highscore of \(score) to leaderboard")
let scoreReporter = GKScore(leaderboardIdentifier: “MY_ID_THERE”)
scoreReporter.value = Int64(gameScore)
let scoreArray: [GKScore] = [scoreReporter]
GKScore.report(scoreArray, withCompletionHandler: {error -> Void in
if error != nil {
print("An error has occured: \(String(describing: error))")
}
})
}
}
func overrideHighestScore(gameScore: Int) {
UserDefaults.standard.integer(forKey: "highestScore")
if gameScore > UserDefaults.standard.integer(forKey: "highestScore") {
UserDefaults.standard.set(gameScore, forKey: "highestScore")
UserDefaults.standard.synchronize()
saveHighscore(gameScore: score)
print(score.hashValue)
}
}
当我按下按钮时我调用了这两个函数
saveHighscore (gameScore: score)
overrideHighestScore (gameScore: score)
控制台正确显示输出,例如,当收集五个点时,输出将是一条消息,称为:
Success! Sending the highscore of 5 to the leaderboard
但是游戏中心中的变量 score 的值没有发送,并且在第一次访问棋盘时获得了零值
我真的希望得到你的帮助。
真诚地, 尤金。
【问题讨论】:
-
嘿,尤金,今年早些时候我也经历过和你一样的情况。我联系了苹果支持,看来这是代表他们的错误。与您类似,排行榜在几天后不会更新。我建议您联系 Apple iTunes Connect。他们应该能够修复它。
标签: ios xcode swift3 sprite-kit leaderboard