2017-06-20 5 views
-1

私はプレーヤーがアプリを出るたびに高い得点を得ようとしていますが、それをうまく動かすのには苦労しています。 「間違いを犯しmはここUserDefaultsを使って即座に高い得点を保存する

var gameSettings = Settings.sharedInstance 
let HIGHSCORE = "HIGHSCORE" 

if gameSettings.highScore < score{ 
     gameSettings.highScore = score 

     UserDefaults.standard.set(gameSettings.highScore, forKey: HIGHSCORE) 
    } 

     if gameSettings.highScore >= score{ 
      gameSettings.score = score 

    } 

    let gameOverHighScore = SKLabelNode() 
    gameOverHighScore.name = "gameOverHighScore" 
    gameOverHighScore.fontName = "Helvetica Neue UltraLight" 
    if let HIGHSCORE = UserDefaults.standard.value(forKey: HIGHSCORE) { 
     gameOverHighScore.text = "HIGHSCORE : \(HIGHSCORE)M" 
    } 
    gameOverHighScore.fontColor = SKColor.white 
    gameOverHighScore.position = CGPoint(x: 0, y: -175) 
    gameOverHighScore.fontSize = 70 
    gameOverHighScore.zPosition = 52 
    addChild(gameOverHighScore) 

答えて

0

のようなものを取得する必要がありますがないキーのハイスコアでUserDefaultsに値を見つけるしようとしていますしかし、ANY型の新しい値HIGHSCOREによって。

if let HIGHSCORE = UserDefaults.standard.value(forKey: self. self.HIGHSCORE) as! Int { gameOverHighScore.text = "HIGHSCORE : \(HIGHSCORE)M" }

か、別の名前で新しい値に値をアンラップすることができます:あなたはそれを修正したい場合は、次のように行うことができます。価値を適切なタイプまたは用途にキャストすることを忘れないでください。

UserDefaults.standard.integer(forKey: self.HIGHSCORE) 
0

それを行う方法についての簡単な例です:取得するために

let firebaseId = user.uid // Variable we want to save 
UserDefaults.standard.set(firebase, forKey: "firebase") // Saving the variable with key "firebase" 

そして今:

if let firebaseId = UserDefaults.standard.string(forKey: "firebase") { 
    print("Firebase ID: \(firebase)") 
} 

あなたのコードで、あなたはハイスコアを取得している、とあなたは(私はあなたのコードから推測することができるものに基づいて)gameSettings.highScore if let HIGHSCORE = UserDefaults.standard.value(forKey: HIGHSCORE) { gameOverHighScore.text = "HIGHSCORE : \(HIGHSCORE)M" }

関連する問題