Понимание CCBatchNode в Cocos2d

Я слышал, что использование CCBatchNode лучше для выступлений в Cocos2d. У меня проблемы с пониманием, как это работает. У меня есть несколько подклассов CCSprite, которые представляют объекты в моей игре. Пока что я их инициализирую spriteWithFile: метод.

Теперь у меня есть таблица спрайтов, содержащая все мои спрайты (вместе с файлом plist). Как я должен использовать это, чтобы я мог извлечь выгоду из "единственного вызова ничьей openGL"?

Если я инициализирую свои спрайты, возвращая кадр в CCBatchNode, это будет работать?

В любом случае, я плохо понимаю CCBatchNode, некоторая помощь будет отличной!

С уважением

1 ответ

Вот быстрый пример использования CCSpriteFrameCache и CCSpriteBatchNode.

Сначала настройте общий кэш кадров (представьте, что это отображение имен ваших отдельных изображений и их прямоугольных кадров в объединенном изображении узла пакета):

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spritesheet.plist" textureFile:@"spritesheet.png"];

Теперь создайте свой пакетный узел с объединенным именем изображения (этот batchNode выполняет одно рисование для нескольких спрайтов):

CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"spritesheet.png" capacity:20];

Теперь создайте узел спрайта, передавая имя отдельного изображения. Добавьте его в пакетный узел. (Опять же, batchnode будет выполнять вызовы отрисовки, так что именно в этом и заключается выигрыш в производительности):

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"name_of_your_sprite_in_plist"];
[batchNode addChild:sprite];

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

Другие вопросы по тегам