Ios 如何保持总得分的多少

Ios 如何保持总得分的多少,ios,xcode,swift,nsuserdefaults,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)"}) /

我想记录下每个人在比赛中的总得分。例如,如果一个人玩游戏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默认值保存总分,将其加载到正在计算分数的游戏场景中,并以某种方式将加载的总分添加到当前分数中,然后保存总分?!我希望这是有道理的

写:

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

写:

阅读:

写:

阅读:

写:

阅读:

  • 在类之外的某个地方定义一个便利常数
    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)
      }
    
      • 在类之外的某个地方定义一个便利常数
        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)
          }
        
          • 在类之外的某个地方定义一个便利常数
            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)
              }
            
              • 在类之外的某个地方定义一个便利常数
                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)
                  }
                

              我已经添加了所有代码,它在游戏场景中完美工作,因为我只需添加TotalScoreLabel.text=“(totalScore)”。但是,当我使用getTotalScore()在不同的场景中使用totalScoreKey时,它会给出一个字符串而不是一个Int。如何将该键转换为一个Int,以便可以对标签节点执行类似的操作,以在另一个场景中显示总分?我尝试过totalScoreKey.toInt(),但它说返回后不会执行任何代码。没关系,我通过在顶层将totalScoreKey设置为Int:var totalScoreKey:Int=0来修复它。工作完美。非常感谢您的帮助。我已经添加了所有代码,它在游戏场景中完美工作,因为我只需添加TotalScoreLabel.text=“(totalScore)”。但是,当我使用getTotalScore()在不同的场景中使用totalScoreKey时,它会给出一个字符串而不是一个Int。如何将该键转换为一个Int,以便可以对标签节点执行类似的操作,以在另一个场景中显示总分?我尝试过totalScoreKey.toInt(),但它说返回后不会执行任何代码。没关系,我通过在顶层将totalScoreKey设置为Int:var totalScoreKey:Int=0来修复它。工作完美。非常感谢您的帮助。我已经添加了所有代码,它在游戏场景中完美工作,因为我只需添加TotalScoreLabel.text=“(totalScore)”。但是,当我使用getTotalScore()在不同的场景中使用totalScoreKey时,它会给出一个字符串而不是一个Int。如何将该键转换为一个Int,以便可以对标签节点执行类似的操作,以在另一个场景中显示总分?我尝试过totalScoreKey.toInt(),但它说返回后不会执行任何代码。没关系,我通过在顶层将totalScoreKey设置为Int:var totalScoreKey:Int=0来修复它。工作完美。非常感谢您的帮助。我已经添加了所有代码,它在游戏场景中完美工作,因为我只需添加TotalScoreLabel.text=“(totalScore)”。但是,当我使用getTotalScore()在不同的场景中使用totalScoreKey时,它会给出一个字符串而不是一个Int。如何将该键转换为一个Int,以便可以对标签节点执行类似的操作,以在另一个场景中显示总分?我尝试过totalScoreKey.toInt(),但它说返回后不会执行任何代码。没关系,我通过在顶层将totalScoreKey设置为Int:var totalScoreKey:Int=0来修复它。工作完美。非常感谢你的帮助。