如何使用 UserDefaults 快速将高分保存到游戏中? [复制]
Posted
技术标签:
【中文标题】如何使用 UserDefaults 快速将高分保存到游戏中? [复制]【英文标题】:How to save a highscore to a game in swift with UserDefaults? [duplicate] 【发布时间】:2016-12-04 12:35:41 【问题描述】:到目前为止,这是我所做的,但我的高分没有改变。
我忽略了所有不相关的变量等
如果有人可以帮助我,那就太好了。我一直在尝试这样做 2 天大声笑帮助
class GameScene: SKScene, SKPhysicsContactDelegate
var score = Int()
let scoreLabel = SKLabelNode()
var highScoreLabel = SKLabelNode()
var highScore = UserDefaults().integer(forKey: "HIGHSCORE")
func createScene()
self.physicsWorld.contactDelegate = self
scoreLabel.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 + self.frame.height / 3)
scoreLabel.text = "\(score)"
scoreLabel.zPosition = 5
scoreLabel.fontSize = 60
scoreLabel.fontColor = UIColor.white
self.addChild(scoreLabel)
highScoreLabel.text = "High Score = \(UserDefaults().integer(forKey: "HIGHSCORE"))"
highScoreLabel.fontColor = UIColor.white
highScoreLabel.position = CGPoint(x: 120, y: 20)
addChild(highScoreLabel)
highScoreLabel.zPosition = 6
func didBegin(_ contact: SKPhysicsContact)
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == physicsCategory.score && secondBody.categoryBitMask == physicsCategory.man
score += 1
scoreLabel.text = "\(score)"
firstBody.node?.removeFromParent()
if score < UserDefaults().integer(forKey: "HIGHSCORE")
saveHighScore()
else if firstBody.categoryBitMask == physicsCategory.man && secondBody.categoryBitMask == physicsCategory.score
score += 1
scoreLabel.text = "\(score)"
secondBody.node?.removeFromParent()
if score > UserDefaults().integer(forKey: "HIGHSCORE")
saveHighScore()
func saveHighScore()
UserDefaults.standard.integer(forKey: "HIGHSCORE")
highScoreLabel.text = "High Score = \(UserDefaults().integer(forKey: "HIGHSCORE"))"
【问题讨论】:
【参考方案1】:试试这个
func saveHighScore()
UserDefaults.standard.set(score, forKey: "HIGHSCORE")
【讨论】:
UserDefaults.standard.synchronize() 是旧的;不再需要将对象保存到 UserDefaults。否则很好的答案! 感谢您的快速回复!不幸的是它没有工作:(@penatheboss 你知道如何在新的 Swift 3 中做到这一点吗??任何帮助表示赞赏。 @niX 这不是我的答案;但是它应该仍然有效。究竟是什么不工作? 当我摆脱同步时它最终工作了。我用 highScoreLabel.text = "High Score = (UserDefaults().integer(forKey: "HIGHSCORE"))" 交换了行 UserDefaults.standard.set(score, forKey: "HIGHSCORE")" @niX 感谢您的关注!我编辑了我的答案以上是关于如何使用 UserDefaults 快速将高分保存到游戏中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用静态自我实例将模型类保存在 UserDefaults 中?