为什么我的高分停止更新?
Why my highscore stopped updating?
我打了高分,几个小时前测试过,效果很好。我的最好成绩是 6,比赛挽救了它。但是现在,我的分数是 10,然后是 12,它仍然显示我的高分是 6。我很确定我在完成之后没有触及与那段代码相关的任何内容。
这是我的最高分:
override func didMoveToView(view: SKView) {
//highscore
var HighScoreDefaults = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
if (score > HighScoreDefaults) {
NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "highscore")
NSUserDefaults.standardUserDefaults().synchronize()
}
var showHighscore = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
highScoreText.text = "Highscore : \(showHighscore)"
highScoreText.fontSize = 34
highScoreText.fontColor = SKColor.grayColor()
}
会出现什么问题?
编辑: 所以我将由@trojanfoe 编辑的代码放入 override func update(currentTime: NSTimeInterval)
函数中,它再次运行。老实说,我不知道是什么导致了这个问题,但是对于那些和我有同样问题的人——尝试更新而不是 didMoveToView
。
您的代码看起来应该可以工作,但是 当 NSUserDefaults synchronize
实际将数据写入磁盘时发生了变化(请参阅 this SO question)。
如果你知道新的最高分是多少,你可以通过使用这个(稍微更有效和更明显的)代码来完全避免这个问题:
override func didMoveToView(view: SKView) {
//highscore
var highScore = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
if (score > highScore) {
highScore = score;
NSUserDefaults.standardUserDefaults().setInteger(highScore, forKey: "highscore")
NSUserDefaults.standardUserDefaults().synchronize()
}
highScoreText.text = "Highscore : \(highScore)"
highScoreText.fontSize = 34
highScoreText.fontColor = SKColor.grayColor()
}
(即避免额外阅读 NSUserDefaults
)。
我打了高分,几个小时前测试过,效果很好。我的最好成绩是 6,比赛挽救了它。但是现在,我的分数是 10,然后是 12,它仍然显示我的高分是 6。我很确定我在完成之后没有触及与那段代码相关的任何内容。 这是我的最高分:
override func didMoveToView(view: SKView) {
//highscore
var HighScoreDefaults = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
if (score > HighScoreDefaults) {
NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "highscore")
NSUserDefaults.standardUserDefaults().synchronize()
}
var showHighscore = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
highScoreText.text = "Highscore : \(showHighscore)"
highScoreText.fontSize = 34
highScoreText.fontColor = SKColor.grayColor()
}
会出现什么问题?
编辑: 所以我将由@trojanfoe 编辑的代码放入 override func update(currentTime: NSTimeInterval)
函数中,它再次运行。老实说,我不知道是什么导致了这个问题,但是对于那些和我有同样问题的人——尝试更新而不是 didMoveToView
。
您的代码看起来应该可以工作,但是 当 NSUserDefaults synchronize
实际将数据写入磁盘时发生了变化(请参阅 this SO question)。
如果你知道新的最高分是多少,你可以通过使用这个(稍微更有效和更明显的)代码来完全避免这个问题:
override func didMoveToView(view: SKView) {
//highscore
var highScore = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
if (score > highScore) {
highScore = score;
NSUserDefaults.standardUserDefaults().setInteger(highScore, forKey: "highscore")
NSUserDefaults.standardUserDefaults().synchronize()
}
highScoreText.text = "Highscore : \(highScore)"
highScoreText.fontSize = 34
highScoreText.fontColor = SKColor.grayColor()
}
(即避免额外阅读 NSUserDefaults
)。