2016-04-14 8 views
0

私は最高のスコアを持つスプライトキットゲームを持っています。それはNSUserのデフォルトを使用しています。しかし、私は最高得点2を得て、それから私は完全にアプリケーションを閉じ、それを開いてそれは私の最高得点2を表示し、スコアとして1つを取得します。それは2のままです。しかし、私は再びアプリケーションを閉じて、それを開く、それは最高得点1を示しています。なぜこれを行うのですか?これは私のコードです。 if条件は機能しませんか?注:これはハイスコアコードに絞られています。私の最高得点は引き続き上下しています。 Swift SpriteKit

import SpriteKit 

//In the DidMoveToView function 
if let Highscore1 = defaults.stringForKey("Highscore"){ 
    HighScoreLabel.text = "HIGHSCORE: \(Highscore1)" 
} 
//In the touches began func 
//Making what happens when the User Fails and a new highscore is achieved 

if Score > highscore { 

    defaults.setObject("\(Score)", forKey: "Highscore") 

} 

問題は、あなたがNSUserDefaultsからハイスコアを読み、HighScoreLabelでそれを見せているで事前に

+0

iOS8でこれを行う必要がある場合は思い出せませんが、ちょうどその場合、どこからでも呼ばれて同期されていますか?おそらくsetObjectの直後に追加して、何が起こるかを見てみましょう。 –

答えて

1

、ありがとうございました。

if Score > highscore { 
    defaults.setObject("\(Score)", forKey: "Highscore") 
} 

あなたがする必要がある:それはあなたがアプリを開くと、以下の条件真なります0のままであり、初めて演じることのためしかし、あなたは、highscore変数に/格納された値を割り当てられませんでした

if let Highscore1 = defaults.stringForKey("Highscore") { 
    HighScoreLabel.text = "HIGHSCORE: \(Highscore1)" 

    // Storing current high score to variable 
    highscore   = Int(Highscore1) 
} 
関連する問題