NSUser默认保存总分

时间:2015-08-01 14:56:17

标签: ios swift nsuserdefaults

有没有办法保存使用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])))

每次比赛结束时我如何将其添加到总得分中,以便我可以在主屏幕中加载总得分?我正在考虑在分数达到某一点时提供额外的场景。 感谢。

2 个答案:

答案 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)"
}