我将CCSprite子类化为FMObject作为我的游戏对象的基类。该类创建一个b2Body并使用CCSpriteBatchNode。问题是,制作FMSpaceShip的多个副本将使多个CCSpriteBatchNode对象全部使用相同的png。这会导致png一次又一次地加载,还是会在这里进行一些优化?
答案 0 :(得分:2)
是的,您可以依靠Cocos2D内部缓存优化。纹理将仅在CCTextureCache中加载一次,并且将使用引用计数由每个批处理节点引用。
也就是说,如果我正确地阅读您的描述,则不需要为每个sprite创建一个批处理节点。您应该考虑在CCSprite类外部创建批处理节点,然后让您的sprite(或派生的FMSpaceShips)使用该单个批处理节点进行渲染。
在某些情况下,创建多个批处理节点仍然很有用 - 例如,当您希望它们在不同的zOrder处渲染时(例如,您有云精灵总是需要在主要太空船精灵后面渲染)。