2014-10-03 26 views
1

我已經使用NSUserDefaults設置了高分,其中如果對象與塊聯繫,則遊戲結束。如果分數高於高分,則用新值更新高分。如何使用Swift重置SpriteKit中的NSUserDefaults的高分

我該如何使用按鈕將高分重置爲零?

func didBeginContact(contact: SKPhysicsContact) { 

    if moving.speed > 0 { 

     if (contact.bodyA.categoryBitMask & scoreCategory) == scoreCategory || (contact.bodyB.categoryBitMask & scoreCategory) == scoreCategory { 
      // Balloon has contact with score entity 
      score++ 
      scoreLabelNode.text = String(score) 

      // Add a little visual feedback for the score increment 
      scoreLabelNode.runAction(SKAction.sequence([SKAction.scaleTo(1.5, duration:NSTimeInterval(0.1)), SKAction.scaleTo(1.0, duration:NSTimeInterval(0.1))])) 
     } else { 

      moving.speed = 0 

      balloon.physicsBody?.collisionBitMask = blockCategory 

      NSUserDefaults.standardUserDefaults().integerForKey("highscore") 

      //Check if score is higher than NSUserDefaults stored value and change NSUserDefaults stored value if it's true 
      if score > NSUserDefaults.standardUserDefaults().integerForKey("highscore") 
      { 
       NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "highscore") 
       NSUserDefaults.standardUserDefaults().synchronize() 
      } 

      NSUserDefaults.standardUserDefaults().integerForKey("highscore") 

      var highscoreShow = defaults.integerForKey("highscore") 

      highscoreLabelNode = SKLabelNode(fontNamed: "MarkerFelt-Wide") 
      highscoreLabelNode.position = CGPointMake(CGRectGetMidX(self.frame), 530) 
      highscoreLabelNode.zPosition = 10 
      highscoreLabelNode.fontSize = 18 
      highscoreLabelNode.text = "Highscore: \(highscoreShow)" 
      self.addChild(highscoreLabelNode) 


      gameoverLabelNode = SKLabelNode(fontNamed: "MarkerFelt-Wide") 
      gameoverLabelNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)) 
      gameoverLabelNode.zPosition = 10 
      gameoverLabelNode.text = "GameOver" 
      self.addChild(gameoverLabelNode) 

      returnBtn.position = CGPointMake(CGRectGetMidX(self.frame), 250) 
      returnBtn.zPosition = 5 
      returnBtn.setScale(0.5) 
      self.addChild(returnBtn) 

      println("end the game") 

      self.canRestart = true 

     } 
    } 
} 

回答

4

要重置高分回零,所有你需要使用方法是:

//Sets the integer value for the key "highscore" to be equal to 0 
NSUserDefaults.standardUserDefaults().setInteger(0, forKey: "highscore") 
//Synchronizes the NSUserDefaults 
NSUserDefaults.standardUserDefaults().synchronize() 
+1

,完美的工作,非常感謝你! – PoisonedApps 2014-10-03 18:10:09