Cocos2d iphone 在不使用CCSpriteBatchNode的情况下使用CCSpriteBrameCache

Cocos2d iphone 在不使用CCSpriteBatchNode的情况下使用CCSpriteBrameCache,cocos2d-iphone,Cocos2d Iphone,我想知道在不使用CCSpriteBatchNode的情况下,是否存在缓存sprite工作表和按帧访问sprite的问题 在我的游戏的某些部分中,sprite批处理节点很有用,因为屏幕上有很多东西,但在另一部分则不是,因为只有一些东西,并且对层有要求,所以CCSpriteBatchNode没有用处。然而,为了保持一致性,我想为我的所有精灵使用精灵表,因此开始怀疑我是否仍然会从中受益?(或者更糟的是,它可能会慢一些……将所有精灵放入纹理图集或您所称的精灵表中显然是有好处的。纹理以2维的幂存储在内存中

我想知道在不使用CCSpriteBatchNode的情况下,是否存在缓存sprite工作表和按帧访问sprite的问题


在我的游戏的某些部分中,sprite批处理节点很有用,因为屏幕上有很多东西,但在另一部分则不是,因为只有一些东西,并且对层有要求,所以CCSpriteBatchNode没有用处。然而,为了保持一致性,我想为我的所有精灵使用精灵表,因此开始怀疑我是否仍然会从中受益?(或者更糟的是,它可能会慢一些……

将所有精灵放入纹理图集或您所称的精灵表中显然是有好处的。纹理以2维的幂存储在内存中。因此,如果你有一个129px乘以132px的精灵,它会以256px乘以256px的形式存储在内存中,这是2的最接近幂。如果你有很多精灵,那会消耗很多额外的内存

通过使用纹理图集,你在内存中只有一个纹理,然后它会从中提取出精灵所需的部分。这些精灵可以是你想要的任何尺寸,而不必担心2种尺寸的威力

您可以在本教程中阅读有关它的更多详细信息

我明白了,即使我不使用CCSpriteBatchNode,我也能从中受益?是的,批处理节点减少了绘图调用,因此不使用一个会增加每帧的绘图。此外,当您从同一文件(如粒子)创建大量精灵时,批处理节点也非常有用,因为这样您只会在内存中存储精灵一次。