对多个CCSpriteBatchNode(cocos2d)使用相同的png

时间:2011-11-30 23:07:29

标签: cocos2d-iphone

我将CCSprite子类化为FMObject作为我的游戏对象的基类。该类创建一个b2Body并使用CCSpriteBatchNode。问题是,制作FMSpaceShip的多个副本将使多个CCSpriteBatchNode对象全部使用相同的png。这会导致png一次又一次地加载,还是会在这里进行一些优化?

1 个答案:

答案 0 :(得分:2)

是的,您可以依靠Cocos2D内部缓存优化。纹理将仅在CCTextureCache中加载一次,并且将使用引用计数由每个批处理节点引用。

也就是说,如果我正确地阅读您的描述,则不需要为每个sprite创建一个批处理节点。您应该考虑在CCSprite类外部创建批处理节点,然后让您的sprite(或派生的FMSpaceShips)使用该单个批处理节点进行渲染。

在某些情况下,创建多个批处理节点仍然很有用 - 例如,当您希望它们在不同的zOrder处渲染时(例如,您有云精灵总是需要在主要太空船精灵后面渲染)。