【发布时间】:2015-10-03 08:03:01
【问题描述】:
我正在用 swift 创建一个游戏,并且分数运行良好。唯一的问题是高分。我创建了一个名为 checkScores() 的函数来检查分数是否大于高分。但高分仍为0。
func checkScores() {
if scoreInt > highScoreInt {
NSUserDefaults.standardUserDefaults().setInteger(scoreInt, forKey: "high")
highScoreInt = NSUserDefaults.standardUserDefaults().integerForKey("high")
NSUserDefaults.standardUserDefaults().synchronize()
highScoreLbl.text = "HIGHSCORE : \(highScoreInt)"
}
我在 didMoveToView 中调用了它。 我在游戏场景中创建了高分标签和整数,并在 initHud() 中设置了标签文本
func initHud() {
scoreLbl = SKLabelNode(fontNamed: "Geneva")
scoreLbl.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
scoreLbl.text = "0"
scoreLbl.fontSize = 100
scoreLbl.alpha = 0.5
addChild(scoreLbl)
highScoreInt = NSUserDefaults.standardUserDefaults().integerForKey("high")
NSUserDefaults.standardUserDefaults().synchronize()
highScoreLbl = SKLabelNode(fontNamed: "Geneva")
highScoreLbl.fontSize = 30
highScoreLbl.position = CGPointMake(150, self.frame.size.height - 80)
highScoreLbl.text = "HIGHSCORE : \(highScoreInt)"
addChild(highScoreLbl)
}
当我运行游戏时,高分保持为零。我试图将 checkScore() 放在 didBeginContact 中并且工作正常。但为什么?因为物理每帧都会更新? 是否可以在 didMoveToView 中检查它?谢谢!
【问题讨论】:
标签: swift sprite-kit