如何保持一共得了多少分
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?