Swift 3 Game Center Leaderboard 不保存分数值
Swift 3 Game Center Leaderboard does not save the value of the score
我有一个问题,帮助我理解主题。老实说,我花了几天时间研究这个主题,但还没有成功。
SpriteKit上有一个简单的游戏,Swift 3.
我正在尝试实施 Leaderboard Game Center。
iTunes Connect已设置,排行榜已创建,测试用户已创建。
当我开始游戏时,用户正常登录。显示创建的棋盘的按钮,我可以在游戏中心打开我的排行榜。
问题是排行榜中得分的值没有更新。
我的游戏分数存储在变量"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
但游戏中心变量分数的值未发送,并且在第一次访问棋盘时获得零值
真心希望得到你的帮助。
真诚的,
尤金.
希望您已在 https://itunesconnect.apple.com
正确配置排行榜
请参考下图
另请参阅以下代码以在排行榜上保存分数。
func saveScoreOnGameCenter()
{
let leaderboardID = 111
let sScore = GKScore(leaderboardIdentifier: leaderboardID)
sScore.value = Int64(10)
GKScore.reportScores([sScore], withCompletionHandler: { (error: NSError?) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
print("Score submitted")
}
})
}
希望这可以帮助您解决问题。
我有一个问题,帮助我理解主题。老实说,我花了几天时间研究这个主题,但还没有成功。
SpriteKit上有一个简单的游戏,Swift 3.
我正在尝试实施 Leaderboard Game Center。
iTunes Connect已设置,排行榜已创建,测试用户已创建。
当我开始游戏时,用户正常登录。显示创建的棋盘的按钮,我可以在游戏中心打开我的排行榜。
问题是排行榜中得分的值没有更新。
我的游戏分数存储在变量"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
但游戏中心变量分数的值未发送,并且在第一次访问棋盘时获得零值
真心希望得到你的帮助。
真诚的, 尤金.
希望您已在 https://itunesconnect.apple.com
正确配置排行榜请参考下图
另请参阅以下代码以在排行榜上保存分数。
func saveScoreOnGameCenter()
{
let leaderboardID = 111
let sScore = GKScore(leaderboardIdentifier: leaderboardID)
sScore.value = Int64(10)
GKScore.reportScores([sScore], withCompletionHandler: { (error: NSError?) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
print("Score submitted")
}
})
}
希望这可以帮助您解决问题。