如何保持一共得了多少分

Posted

技术标签:

【中文标题】如何保持一共得了多少分【英文标题】:How to keep a total of how many points have been scored overall 【发布时间】:2015-08-02 10:58:06 【问题描述】:

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

【问题讨论】:

【参考方案1】:

在类外的某处定义一个便利常量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() 时,它会给出一个字符串而不是一个 Int。如何转换密钥给我一个 Int 以便我可以用标签节点做类似的事情来显示另一个场景中的总分?我试过 totalScoreKey.toInt() 但它说返回后不会执行任何代码。 没关系,我通过在顶层将 totalScoreKey 设为 Int 来修复它:var totalScoreKey: Int = 0。完美运行。非常感谢您的帮助。【参考方案2】:

写:

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

阅读:

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

【讨论】:

以上是关于如何保持一共得了多少分的主要内容,如果未能解决你的问题,请参考以下文章

每人涨10%的工资,涨的前一共不超过5万,从低工资往高工资的人涨,超过5W则停止涨,问涨的钱花了多少,多少人获得了涨薪。

如何在 UIScrollView 中的 UIImageViews 之间添加分隔符并保持分页滚动高度 480?

c语言如何查看多重for循环一共循环了多少次,看看输出了多少行?

php如何查询某个表一共多少条记录?

如何保持 VMWare VM 的时钟同步?

数组保持不变的概率是多少?