我的第一个iOS游戏应用程序取得了很大的进步,目前我正在研究高分元素,如果有人愿意帮助指导我如何使用正确的代码。
我已经按照一些混合结果进行了一些教程,到目前为止我每次按屏幕时都会将得分数增加1(将会更改但是用于此帖子的目的),这样可以正常工作但是我需要一些帮助使用NSUserDefaults
保存高分并显示高分。
以下是我的代码的摘录,目前得分正常,但高分仍然为0且不会增加。任何帮助将不胜感激!
这是我的代码.....
谢谢。
使用重新编写的代码编辑
// in gameScene:
var scoreLabelNode = SKLabelNode()
var score = NSInteger()
var highScoreLabelNode = SKLabelNode()
var highScore = NSInteger()
// in did move to view
score = 0
scoreLabelNode.fontName = "Helvetica-Bold"
scoreLabelNode.position = CGPoint(x: self.frame.size.width / 2.8, y: self.frame.size.height / 1.2 )
scoreLabelNode.fontSize = 20
scoreLabelNode.alpha = 0.2
scoreLabelNode.zPosition = -30
scoreLabelNode.text = "Score \(score)"
self.addChild(scoreLabelNode)
// start of high score
var highScoreDefault = NSUserDefaults.standardUserDefaults()
if (highScoreDefault.valueForKey("highScore") != nil){
highScore = highScoreDefault.valueForKey("highscore") as! NSInteger!
highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String
}
// highScore = 0
// if (score > highScore) {
// highScore = score
// highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String
// }
highScoreLabelNode.fontName = "Helvetica-Bold"
highScoreLabelNode.position = CGPoint(x: self.frame.size.width / 2.6, y: self.frame.size.height / 1.3 )
highScoreLabelNode.fontSize = 20
highScoreLabelNode.alpha = 0.2
highScoreLabelNode.zPosition = -30
highScoreLabelNode.text = "High Score \(score)"
self.addChild(highScoreLabelNode)
// in touches began
let incrementScore = SKAction.runBlock ({
++self.score
self.scoreLabelNode.text = "Score \(self.score)"
})
self.runAction(incrementScore)
// in update before each frame
// highScore = 0
if (score > highScore) {
highScore = score
highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String
}
答案 0 :(得分:1)
对我而言,似乎你没有打电话
Activity A
再次在哪里,这是你的高分榜?是否在您提供的代码中未指明的地方调用?
答案 1 :(得分:0)
从我可以看到你没有使用NSUserDefaults.standardUserDefaults.setObject()将高分保存到用户默认值,我也不确定你为什么要将highScore设置为0