SpriteKit сокращает вызовы отрисовки SKLabelnode

Итак, у меня есть сцена в моей игре, которая отображает уровни, как и в любой другой игре с уровнем, я создаю подкласс SKSpriteNode, чтобы создать пользовательскую кнопку уровня, и в этом подклассе я добавляю SKLabelNode для отображения названия уровня (уровень 1, уровень 2.. ...). Проблема в том, что у меня много вызовов отрисовки, потому что каждый SKLabelNode визуализирует как один момент текстуры, объединяя их в атлас. Я хотел бы знать, может ли кто-нибудь помочь мне уменьшить эти вызовы отрисовки. Я не хочу использовать Glyph Designer, потому что эта игра будет на многих разных языках, например, на японском, китайском и других. Любой совет?

-(void)setText: (NSString *)text{

_label = [SKLabelNode labelNodeWithFontNamed:@"CooperBlack"];
_label.text = text;
_label.fontColor = [UIColor blackColor];
_label.fontSize = 11;
_label.zPosition = 2;
_label.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;
_label.position = CGPointMake(0, 0);
[self addChild: _label];

}


person David Villarreal    schedule 29.07.2014    source источник
comment
Было бы полезно, если бы вы опубликовали код, добавляющий SKLabelNodes.   -  person 0x141E    schedule 31.07.2014


Ответы (1)


В зависимости от того, что вы делаете и когда, вы можете отображать содержимое меток в текстуры во время выполнения (предварительная загрузка/кэширование), а затем манипулировать ими любым удобным для вас способом.

SKLabelNode *theThingToBecomeATexture;
   //OR
SKSpriteNode *theThingToBecomeATexture;

SKTexture *theTexture = [theView textureFromNode:theThingToBecomeATexture];

Но мой дополнительный вопрос или комментарий будет таким: мне трудно поверить, что вы сталкиваетесь с проблемами производительности, показывая на экране несколько десятков узлов меток. Я могу понять, что вы сталкиваетесь с скачком нагрузки, если пытаетесь выделить и инициировать несколько из них одновременно, и в этом случае я бы предварительно загрузил их или выделил их не в основном потоке.

person Cooper Buckingham    schedule 29.07.2014
comment
у меня нет огромной проблемы с производительностью. Основная проблема в том, что иногда он забывает отображать некоторые метки. поэтому иногда он не показывает некоторые ярлыки. - person David Villarreal; 30.07.2014
comment
Это звучит как проблема с логикой, а не с производительностью, с которой обычно связаны вызовы отрисовки. - person Cooper Buckingham; 30.07.2014