游戏中心排行榜不工作 ("no scores")
game center leaderboard not working ("no scores")
现在我已经完成了我的游戏制作,我需要添加的只是应用程序内购买和排行榜,为了不弄乱我正在用测试应用程序做的任何事情。我的排行榜现在正在显示,即使我在测试时登录到游戏中心(在真实设备和模拟器上),我在查看排行榜时得到 "no scores"。但我的代码很好,我已经阅读了苹果文档和其他教程好几天了。但所有教程都已过时,苹果文档在某些特定方面也不清楚。但我认为我的代码很好:
let HighscoreDefault = NSUserDefaults.standardUserDefaults()
if (HighscoreDefault.valueForKey("highScore") != nil){
highScore = HighscoreDefault.valueForKey("highScore") as! NSInteger
}
else {
highScore = 0
}
if (score > highScore){
let HighscoreDefault = NSUserDefaults.standardUserDefaults()
HighscoreDefault.setValue(score, forKey: "highScore")
highScore = HighscoreDefault.valueForKey("highScore") as! NSInteger
saveScore(score)
}
这就是我在游戏中保存分数的方法,这就是我将其上传到排行榜的方法:
func saveScore(score: Int){
let player = GKLocalPlayer()
if player.authenticated == true {
let scoreReporter = GKScore(leaderboardIdentifier: "testingleaderboard101") //leaderboard id here
scoreReporter.value = Int64(highScore) //score variable here (same as above)
let scoreArray: [GKScore] = [scoreReporter]
GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError?) -> Void in
if error != nil {
print("error")
} else {
print("reported correctly")
}
})
}
}
我很确定这里没有错误,但我发帖以防万一。
这是我在记录器中得到的:
插件com.apple.GameCenterUI.GameCenterDashboardExtension无效
我修复了它,ios 9 中的一些错误导致 GKLocalPlayer().authenticated 为 return false 即使玩家已登录。所以在 savescore 函数中,不要检查如果玩家通过身份验证
let player = GKLocalPlayer()
应该是:
let player = GKLocalPlayer.localPlayer()
检查 GKLocalPlayer Class iOS 开发者库的参考文档中的 "Accessing the Shared Local Player" 部分。
我试着把它放在评论中,但我没有足够的分数。请具有必要权限的人这样做。
现在我已经完成了我的游戏制作,我需要添加的只是应用程序内购买和排行榜,为了不弄乱我正在用测试应用程序做的任何事情。我的排行榜现在正在显示,即使我在测试时登录到游戏中心(在真实设备和模拟器上),我在查看排行榜时得到 "no scores"。但我的代码很好,我已经阅读了苹果文档和其他教程好几天了。但所有教程都已过时,苹果文档在某些特定方面也不清楚。但我认为我的代码很好:
let HighscoreDefault = NSUserDefaults.standardUserDefaults()
if (HighscoreDefault.valueForKey("highScore") != nil){
highScore = HighscoreDefault.valueForKey("highScore") as! NSInteger
}
else {
highScore = 0
}
if (score > highScore){
let HighscoreDefault = NSUserDefaults.standardUserDefaults()
HighscoreDefault.setValue(score, forKey: "highScore")
highScore = HighscoreDefault.valueForKey("highScore") as! NSInteger
saveScore(score)
}
这就是我在游戏中保存分数的方法,这就是我将其上传到排行榜的方法:
func saveScore(score: Int){
let player = GKLocalPlayer()
if player.authenticated == true {
let scoreReporter = GKScore(leaderboardIdentifier: "testingleaderboard101") //leaderboard id here
scoreReporter.value = Int64(highScore) //score variable here (same as above)
let scoreArray: [GKScore] = [scoreReporter]
GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError?) -> Void in
if error != nil {
print("error")
} else {
print("reported correctly")
}
})
}
}
我很确定这里没有错误,但我发帖以防万一。
这是我在记录器中得到的:
插件com.apple.GameCenterUI.GameCenterDashboardExtension无效
我修复了它,ios 9 中的一些错误导致 GKLocalPlayer().authenticated 为 return false 即使玩家已登录。所以在 savescore 函数中,不要检查如果玩家通过身份验证
let player = GKLocalPlayer()
应该是:
let player = GKLocalPlayer.localPlayer()
检查 GKLocalPlayer Class iOS 开发者库的参考文档中的 "Accessing the Shared Local Player" 部分。
我试着把它放在评论中,但我没有足够的分数。请具有必要权限的人这样做。