2016-06-01 2 views
1

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

class GameScene: SKScene, SKPhysicsContactDelegate { 

var Enemy1KillCounter:Int = 0 
var Enemy1KillCounterLabel = SKLabelNode() 

override func didMoveToView(view: SKView) { 

    createEnemyKilledLabel() 
} 

    func createEnemyKilledLabel() { 

    Enemy1KillCounterLabel.text = "\(Enemy1KillCounter)" 
    Enemy1KillCounterLabel.fontSize = 65 
    Enemy1KillCounterLabel.fontColor = SKColor .blackColor() 
    Enemy1KillCounterLabel.position = CGPointMake(400, 400) 

    self.addChild(Enemy1KillCounterLabel) 
} 

func updateEnemy1KillCounter() { 

    Enemy1KillCounter = Enemy1KillCounter + 1 

    print(Enemy1KillCounter) 

} 
// I use the next method because i call this method in my enemy class  
    when the enemy is "killed" 

    func Enemy1DieG() { 
    updateEnemy1KillCounter() 
} 

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

ответ

0

Когда вы обновляете Enemy1KillCounter, вам также необходимо обновить Enemy1KillCounterLabel.text новым значением. Кроме того, я не вижу, где вызывается ваш createEnemyKilledLabel(). Удостоверьтесь, что это называется где-то.

Сторона примечания - имена переменных обычно начинаются с нижнего регистра, например enemy1KillCounterLabel. Следуя стандартам, код легче читать другими ...

+0

Я позвонил в мою функцию didMoveToView. Как обновить текст? использовать метод обновления? потому что у меня также есть метод печати там для моего отладчика, и он не обновляется либо он просто говорит 1 каждый раз, а не добавляет 1 каждый раз @MirekE – gkolman

+0

Да, поместите его в функцию обновления. Не уверен, почему ваша печать не отражает добавление. Положите еще одну печать перед добавлением, чтобы проверить, что вы не присваиваете 0 где-то ... – MirekE

+0

Я назначил 0 в качестве базового значения моего целого числа. Я думаю, что то, что продолжает происходить, - это мое целое число, которое по умолчанию остается равным 0. но почему бы не изменить его ? @MirekE – gkolman

0

Обновите текст своей метки после обновления переменной Enemy1KillCounter.

func updateEnemy1KillCounter() { 
    Enemy1KillCounter = Enemy1KillCounter + 1 
    Enemy1KillCounterLabel.text = "\(Enemy1KillCounter)" 
    print(Enemy1KillCounter) 
} 
+0

Я пробовал этот метод, однако ярлык вообще ничего не печатает, когда я объявляю его Enemy1KillCounterLabel.text = "\ (Enemy1KillCounter)" в любом другом методе, кроме createEnemyKilledLabel() @ Md.MuzahidulIslam – gkolman

+0

Вам не хватает ведущей обратной косой черты в вашем комментарий, может быть, так оно и есть? Но чтобы быть уверенным, что вы можете использовать временную строку для хранения значения recast Enemy1KillCounter и назначить это. 'let killCountString = Enemy1KillCounter.description; Enemy1KillCounterLabel.text = killCountString' – rebusB

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