2017-01-09 3 views
0

Мне трудно получить игровой счет, чтобы увеличить время, а не игровые события. Счет - это SKlabelnode, который отображается при запуске игры. Я хочу, чтобы счет увеличить как время игра продолжается, а затем перезапустить обратно в 0, когда игра возобновляется (т.е. игрок умирает)оценка игры увеличивается по времени при нажатии кнопки пуска

Ярлык Счет по-прежнему 0, ив попробовал множество вариантов кода

//score 
    var score = Int() 
    var highScore = Int() 
    let scoreLable = SKLabelNode() 





    scoreLable.position = CGPoint(x: self.frame.width/1.1, y: self.frame.height/1.1) 
    scoreLable.zPosition = 5 
    scoreLable.fontSize = 100 
    scoreLable.fontName = "AppleSDGothicNeo-bold" 
    scoreLable.text = "\(score)" 




func ScoreAndHighScore(){ 
    score = score+1 
    } 

var scoreTimer = Timer(timeInterval: 5.0, target: self, selector: #selector(ScoreAndHighScore), userInfo: nil, repeats: true) 

ответ

0

Вам нужно обновить текст ярлыка каждый раз, когда значение показателя увеличивается.

func ScoreAndHighScore() { 
    score += 1 
    scoreLabel.text = "\(score)" 
} 
+0

не повезло, все еще показывает 0 – TroyDeJ

+0

@TroyDeJ - Вы действительно вызывали таймер? Попробуйте установить точку останова в методе 'ScoreAndHighScore', чтобы убедиться, что он даже вызван. Если это не так, попробуйте использовать 'scheduleTimer', например call' Timer.scheduledTimer (timeInterval: 5.0, target: self, selector: #selector (ScoreAndHighScore), userInfo: nil, repeat: true) 'in' viewDidLoad' просто для тестирования – Pierce

+0

просто попробовал оба, и ни один из них не работает, заставляет меня думать, что код просто совершенно неправильный. – TroyDeJ

0

Я бы рекомендовал использовать SKActions в качестве ваших таймеров, а не NSTimer. Вы могли бы сделать что-то вроде этого:

let wait = SKAction.wait(forDuration: 1.0) 
let incrementScoreAction = SKAction.run { 
    //code to increment score 
} 

let repeatIncrementScore = SKAction.repeatForever(SKAction.sequence([wait, incrementScoreAction])) 

self.run(repeatIncrementScore) 
+0

как бы я сделал то же самое с skactions? – TroyDeJ

+0

@TroyDej, см. Мой обновленный ответ. – claassenApps

+0

просто попробовал, отлично работает и намного лучше. Огромное спасибо – TroyDeJ

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