有没有办法保存使用NSUser默认设置玩的每个游戏的总分?
我有这个在游戏中每秒增加1点:
let waitScore = SKAction.waitForDuration(1.0) //add score every second
let incrementScore = SKAction.runBlock ({
++self.score
self.scoreLabel.text = "\(self.score)"})
self.runAction(SKAction.repeatActionForever(SKAction.sequence([waitScore,incrementScore])))
每次比赛结束时我如何将其添加到总得分中,以便我可以在主屏幕中加载总得分?我正在考虑在分数达到某一点时提供额外的场景。 感谢。
答案 0 :(得分:0)
你可以像这样存储得分,并召唤 increasePoint 或 storeUserPoints(0),并在主屏幕中执行getUserPoints()
func getUserPoints()->Int{
return NSUserDefaults.standardUserDefaults().integerForKey("userPoints") ?? 0
}
func increasePoints(pointsToAdd:Int){
storeUserPoints(getUserPoints()+pointsToAdd)
}
func storeUserPoints(points:Int){
NSUserDefaults.standardUserDefaults().setInteger(points, forKey: "userPoints");
NSUserDefaults.standardUserDefaults().synchronize()
}
答案 1 :(得分:0)
以下功能可用于与NSUserDefaults
保持分数
它将当前得分(S)与高得分值(hs)进行比较。然后,只有当分数高于高分时,它才会返回并将分数存储为高分。
func gameDidEnd(S: Int) -> Int {
/* load score data */
let ud = NSUserDefaults.standardUserDefaults()
if ud.valueForKey("score") == nil { ud.setInteger(S, forKey: "score") }
let hs = ud.integerForKey("score")
if S > hs {
ud.setInteger(S, forKey: "score")
return S
println("NEW HIGHSCORE!")
} else {
return hs
}
self.score.text = "\(S)"
}