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

Cocos2d iphone 对多个CCSpriteBatchNode(cocos2d)使用相同的png,cocos2d-iphone,Cocos2d Iphone,我已经将CCSprite子类化为FMObject,作为游戏对象的基类。此类创建b2Body并使用CCSpriteBatchNode。问题是,创建多个副本(例如FMSpaceShip)将创建多个CCSpriteBatchNode对象,这些对象都使用相同的png。这会导致png一次又一次地被加载吗?或者这里会有一些优化吗?是的,你可以指望Cocos2D内部缓存优化。该纹理将仅在CCTextureCache中加载一次,并将使用引用计数由每个批处理节点引用 也就是说,如果我正确阅读了您的描述,就不需要为

我已经将CCSprite子类化为FMObject,作为游戏对象的基类。此类创建b2Body并使用CCSpriteBatchNode。问题是,创建多个副本(例如FMSpaceShip)将创建多个CCSpriteBatchNode对象,这些对象都使用相同的png。这会导致png一次又一次地被加载吗?或者这里会有一些优化吗?

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

也就是说,如果我正确阅读了您的描述,就不需要为每个精灵创建批处理节点。相反,您应该考虑将批处理节点一次创建到CCSPrITE类,然后让您的精灵(或派生的FMSPixSHIPS)使用该单批节点进行渲染。p>
在某些情况下,创建多个批处理节点仍然很有用—例如,当您希望它们以不同的顺序渲染时(例如,您的云精灵总是需要在主太空船精灵后面渲染)

同意,一个批处理节点应容纳尽可能多的精灵。每个精灵一个批处理节点只是浪费。为此,我计划创建一个批处理节点“池”,存储不同批处理节点的字典,并按名称等请求批处理,以减少使用相同spritesheet png的批处理节点对象的数量。我不想在没有确认需求的情况下进行所有的努力。当然,使用尽可能少的批处理节点总是理想的。