2015-08-05 2 views
0

Я продвигаюсь с моим первым игровым приложением iOS, в настоящее время я работаю над элементом с высоким рейтингом, и если кто-то будет так любезным, чтобы помочь мне в использовании правильный код.Swift iOS - Установить рекорды в игреScene

Я следил за несколькими учебниками со смешанными результатами, пока я увеличиваю счет на 1 для каждого нажатия на экран (будет изменен, но будет использоваться для цели этого сообщения), это работает отлично, но мне нужно некоторые помогают экономить как высокий балл, используя NSUserDefaults, так и отображая высокий балл.

Ниже приводится выдержка из моего кода, в настоящее время оценка работает отлично, но высокий балл остается на 0 и не увеличивается. Любая помощь будет оценена!

Вот мой код .....

Спасибо.

EDITED С переработан КОД

// in gameScene: 

var scoreLabelNode = SKLabelNode() 
var score = NSInteger() 
var highScoreLabelNode = SKLabelNode() 
var highScore = NSInteger() 

// in did move to view 

    score = 0 
    scoreLabelNode.fontName = "Helvetica-Bold" 
    scoreLabelNode.position = CGPoint(x: self.frame.size.width/2.8, y: self.frame.size.height/1.2) 
    scoreLabelNode.fontSize = 20 
    scoreLabelNode.alpha = 0.2 
    scoreLabelNode.zPosition = -30 
    scoreLabelNode.text = "Score \(score)" 
    self.addChild(scoreLabelNode) 

// start of high score 

    var highScoreDefault = NSUserDefaults.standardUserDefaults() 

    if (highScoreDefault.valueForKey("highScore") != nil){ 
     highScore = highScoreDefault.valueForKey("highscore") as! NSInteger! 
     highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String 
    } 

//  highScore = 0 
//  if (score > highScore) { 
//   highScore = score 
//   highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String 
//  } 


    highScoreLabelNode.fontName = "Helvetica-Bold" 
    highScoreLabelNode.position = CGPoint(x: self.frame.size.width/2.6, y: self.frame.size.height/1.3) 

    highScoreLabelNode.fontSize = 20 
    highScoreLabelNode.alpha = 0.2 
    highScoreLabelNode.zPosition = -30 
    highScoreLabelNode.text = "High Score \(score)" 
    self.addChild(highScoreLabelNode) 

// in touches began 

      let incrementScore = SKAction.runBlock ({ 
       ++self.score 
       self.scoreLabelNode.text = "Score \(self.score)" 
      }) 

      self.runAction(incrementScore) 

// in update before each frame 

// highScore = 0 
if (score > highScore) { 
    highScore = score 
    highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String 
} 

ответ

1

Мне кажется, вы не всегда называют

if (score > highScore) { 
    highScore = score 
    highScoreLabelNode.text = NSString(format: "highscore : %i", highScore) as String 
} 

снова в любом месте, которое когда ваш рекорд установлен? Он называется где-то, что не указано в коде, который вы предоставили?

+0

спасибо за ответ, есть не больше кода и вашего права, я вообще не называю код, как и где вы могли бы предложить мне это сделать? –

+1

, вы предпочтительно должны положить эту часть в метод. назовите это func updateHighScore, например. И назовите этот метод, когда вы будете готовы проверить, превышает ли ваш текущий счет высокий показатель. Например: когда игра заканчивается (когда игрок умирает или что-то еще) – dorian

+0

, пожалуйста, отметьте мой ответ как ответ, если это ответит на ваш вопрос. Если у вас возникнут дополнительные вопросы, я могу попытаться помочь. – dorian

0

Из того, что я вижу, что вы не спасаете рекорд для пользователей Defaults с NSUserDefaults.standardUserDefaults.setObject(), кроме того, я не знаю, почему вы устанавливаете рекорды в 0

+0

Спасибо, что заметили это, знаете ли вы, что я могу изменить на свой код, чтобы сохранить рекорд? –

Смежные вопросы