在我的 GameScene 中,我有一个在游戏结束时通过 UserDefaults 保存的分数。下面是我保存分数的 GameScene 代码。
var totalPoints = 0 {
didSet {
score.text = " \(totalPoints)"
UserDefaults.standard.set(totalPoints, forKey: "scoreDefaults")
}
}
一旦玩家失去所有生命,游戏就会将您带回主菜单场景。在这个场景中,如果玩家最后的分数高于他们之前的高分,我想立即检索并更新主菜单场景中的高分数字。但由于某种原因,它只是不断更新用户在游戏结束时获得的每个分数,无论它是高于还是低于上一个高分。我究竟做错了什么?下面是我的主菜单场景。当我打印“newScore”和“getScore”时,我确实看到了正确的值,但是当涉及到在需要时更新高分时,我的代码肯定是错误的。
let getScore:Int = UserDefaults.standard.integer(forKey: "scoreDefaults")
override func didMove(to view: SKView) {
if ((UserDefaults.standard.integer(forKey: "updateHighScoreDefaults")) >= 0) {
highScore.text = " \(newScore)"
} else {
print("I don't know")
}
if (getScore > newScore) {
print("New High Score!")
newScore = getScore
//print(newScore)
UserDefaults.standard.set(newScore, forKey: "updateHighScoreDefaults")
highScore.text = " \(newScore)"
} else {
print("Not a high score")
UserDefaults.standard.set(newScore, forKey: "updateHighScoreDefaults")
highScore.text = " \(newScore)"
}
}