2016-12-04 8 views
0

Пока это то, что я сделал, но мой высокий балл не меняется.Как быстро сохранить рекорды в игре с помощью UserDefaults?

Im оставив все ненужные переменные т.д.,

Если кто-то может помочь мне, что было бы фантастической. Я пытался сделать это в течение 2-х дней, как лол помочь

class GameScene: SKScene, SKPhysicsContactDelegate { 

    var score = Int() 

    let scoreLabel = SKLabelNode() 

    var highScoreLabel = SKLabelNode() 

    var highScore = UserDefaults().integer(forKey: "HIGHSCORE") 


    func createScene(){ 



     self.physicsWorld.contactDelegate = self 

     scoreLabel.position = CGPoint(x: self.frame.width/2, y:  self.frame.height/2 + self.frame.height/3) 
     scoreLabel.text = "\(score)" 
     scoreLabel.zPosition = 5 
     scoreLabel.fontSize = 60 
     scoreLabel.fontColor = UIColor.white 
     self.addChild(scoreLabel) 

     highScoreLabel.text = "High Score = \(UserDefaults().integer(forKey: "HIGHSCORE"))" 
     highScoreLabel.fontColor = UIColor.white 
     highScoreLabel.position = CGPoint(x: 120, y: 20) 
     addChild(highScoreLabel) 

     highScoreLabel.zPosition = 6 



    func didBegin(_ contact: SKPhysicsContact) { 
     let firstBody = contact.bodyA 
     let secondBody = contact.bodyB 

     if firstBody.categoryBitMask == physicsCategory.score && secondBody.categoryBitMask == physicsCategory.man{ 


      score += 1 
      scoreLabel.text = "\(score)" 
      firstBody.node?.removeFromParent() 

      if score < UserDefaults().integer(forKey: "HIGHSCORE") { 
       saveHighScore() 
      } 


     } 
     else if firstBody.categoryBitMask == physicsCategory.man && secondBody.categoryBitMask == physicsCategory.score{ 

      score += 1 
      scoreLabel.text = "\(score)" 
      secondBody.node?.removeFromParent() 

      if score > UserDefaults().integer(forKey: "HIGHSCORE") { 
       saveHighScore() 
      } 

     } 


    func saveHighScore() { 

     UserDefaults.standard.integer(forKey: "HIGHSCORE") 
     highScoreLabel.text = "High Score = \(UserDefaults().integer(forKey: "HIGHSCORE"))" 


    } 

ответ

1

Попробуйте

func saveHighScore() { 
UserDefaults.standard.set(score, forKey: "HIGHSCORE") 
} 
+1

UserDefaults.standard.synchronize() стара; больше нет необходимости сохранять объекты в UserDefaults. Хороший ответ в противном случае! – penatheboss

+0

Спасибо за быстрый ответ! К сожалению, это не сработало :(@penatheboss вы бы знали, как это сделать в новой Swift 3? Любая помощь приветствуется. – niX

+0

@niX это не мой ответ, однако он все равно должен работать. Что именно не работает ?. – penatheboss