Swift iOS - 在gameScene中设置高分

时间:2015-08-05 20:58:18

标签: ios swift sprite-kit

我的第一个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
}

2 个答案:

答案 0 :(得分:1)

对我而言,似乎你没有打电话

Activity A

再次在哪里,这是你的高分榜?是否在您提供的代码中未指明的地方调用?

答案 1 :(得分:0)

从我可以看到你没有使用NSUserDefaults.standardUserDefaults.setObject()将高分保存到用户默认值,我也不确定你为什么要将highScore设置为0