, поэтому я пытаюсь обновить счет в моей игре, и код работает нормально, но структура мне не подходит. то, что я делаю сейчас, это сохранение счета в переменной, а затем удаление старого ребенка и добавление нового ребенка для обновления счета, что-то вроде:
if([self awake]){
int score = (int) x;
//NSLog(@"%i", score);
CCLabelBMFont * scoreLabel = [CCLabelBMFont labelWithString:[NSString stringWithFormat:@"Score : %d", score] fntFile:@"good_dog_plain_32.fnt"];
scoreLabel.position = ccp(100, 300);
[scoreScene addChild:scoreLabel];
if([_game getChildByTag:123]){
[_game removeChildByTag:123 cleanup:YES];
}
[_game addChild:scoreScene z:99 tag:123];
}
теперь этот код работает просто отлично, но он портит fps для игры !!! Есть ли в любом случае, я могу обновить значение ScoreLabel без необходимости удалять, а затем добавить счет в основную сцену игры?
спасибо
ОБНОВЛЕННЫЙ КОД
окончательный фиксированный код:
в основной слой игры я добавил
CCLabelBMFont * scoreLabel;
в заголовочном файле.
в основной инициал игры я добавил
int score = 0;
scoreLabel = [CCLabelBMFont labelWithString:[NSString stringWithFormat:@"Score : %d", score] fntFile:@"good_dog_plain_32.fnt"];
CCScene * scoreScene = [CCScene node];
scoreLabel.position = ccp(100, 300);
[scoreScene addChild:scoreLabel];
[self addChild:scoreScene z:99 tag:123];
, а затем просто использовал setString в моем методе для обновления счета как:
[_game.scoreLabel setString:[NSString stringWithFormat:@"Score : %d", score]];
обратите внимание, что _game
связано с тем, что я объявил ScoreLabel в главной сцене, и мой метод выполняется в другом файле, поэтому, если у вас есть ваш метод рекордов в том же файле, нет необходимости в _game