我目前正致力于一项赛车游戏,其中玩家的目标是在尽可能短的时间内完成一项任务。
我需要为用户节省最快的时间,但游戏中心的默认时间始终为0秒。而且由于Game Center每个用户仅节省1个值,因此它会丢弃玩家的实际时间/分数。
我唯一能做的就是暂时设置排行榜以节省最长的时间。这样可以节省超过0秒的时间。然后我会将其切换回来以便更短的时间得到保存。
这显然不是生产级游戏的解决方案。
我保存或检索分数的方式有什么问题吗?我不知道如何关闭默认的0秒时间或覆盖它。
func loadLeaderBoard(level level:Int){
let leaderboardRequest = GKLeaderboard() as GKLeaderboard!
leaderboardRequest.identifier = "level\(level)ID"
if leaderboardRequest != nil {
leaderboardRequest.loadScoresWithCompletionHandler({ (score, error) -> Void in
if error != nil {
print(error)
} else {
if let myscore:[GKScore] = score {
self.records.updateValue(myscore.first!.formattedValue!, forKey: level)
}
}
})
}
}
func recordTime(level level: Int, record:Int64){
let score = GKScore(leaderboardIdentifier: "level1ID")
score.value = record
GKScore.reportScores([score]) { (error) -> Void in
if error != nil {
print(error)
}else {
print("Score reported: \(score.value)")
}
}
}