我希望跟踪游戏中与玩家一样多的游戏总得分数。例如,如果一个人玩游戏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默认值保存总分,将其加载到计分分数的游戏场景中,并以某种方式将加载的总分加到当前得分然后保存总分?!我希望这是有道理的。
答案 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"];