如何保持总计得分数

时间:2015-08-02 10:58:07

标签: ios xcode swift nsuserdefaults

我希望跟踪游戏中与玩家一样多的游戏总得分数。例如,如果一个人玩游戏25次并且每次得分100,那么他们的总得分将是2500.这是我用来增加游戏中得分的方法:

let waitScore = SKAction.waitForDuration(1.0) //add score every second
let incrementScore = SKAction.runBlock ({
    ++self.score
    self.scoreLabel.text = "\(self.score)"}) //update score label with score
self.runAction(SKAction.repeatActionForever(SKAction.sequence([waitScore,incrementScore])))

总分将显示在不同的场景中,所以我想我需要使用NSUser默认值保存总分,将其加载到计分分数的游戏场景中,并以某种方式将加载的总分加到当前得分然后保存总分?!我希望这是有道理的。

2 个答案:

答案 0 :(得分:3)

  • 在类

    之外的某处定义一个便利常量totalScoreKey
    let totalScoreKey = "totalScore"
    
  • 在AppDelegate类中注册密钥totalScore,例如init方法

      override init()
      {
        let userDefaults = NSUserDefaults.standardUserDefaults()
        let defaultValues = [totalScoreKey: 0]
        userDefaults.registerDefaults(defaultValues)
      }
    
  • getTotalScore()读取并返回总分 该方法可以在任何类

    中实现
      func getTotalScore() -> Int
      {
        let userDefaults = NSUserDefaults.standardUserDefaults()
        return userDefaults.integerForKey(totalScoreKey)
      }
    
  • updateTotalScore()从用户默认值中读取总分,在self.score中添加值并将值写回。
    该方法必须在包含变量score

    的类中实现
      func updateTotalScore()
      {
        let userDefaults = NSUserDefaults.standardUserDefaults()
        var totalScore = userDefaults.integerForKey(totalScoreKey)
        totalScore += self.score
        userDefaults.setInteger(totalScore, forKey: totalScoreKey)
      }
    

答案 1 :(得分:0)

写:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:10 forKey:@"score"];
[defaults synchronize];

读:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger score = [defaults integerForKey:@"score"];