Используйте один и тот же png для нескольких CCSpriteBatchNode (cocos2d) - PullRequest
0 голосов
/ 01 декабря 2011

Я поместил CCSprite в FMObject как базовый класс моих игровых объектов.Этот класс создает b2Body и использует CCSpriteBatchNode.Проблема в том, что при создании нескольких копий, скажем, FMSpaceShip создаст несколько объектов CCSpriteBatchNode, которые используют один и тот же png.Это приведет к тому, что png будет загружаться снова и снова, или здесь будет какая-то оптимизация?

1 Ответ

2 голосов
/ 01 декабря 2011

Да, вы можете рассчитывать на оптимизацию внутреннего кэша Cocos2D. Текстура будет загружена только один раз в CCTextureCache, и на нее будут ссылаться каждый из узлов пакета, используя подсчет ссылок.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...