【问题标题】:Using CCSpriteFrameCache without CCSpriteBatchNode在没有 CCSpriteBatchNode 的情况下使用 CCSpriteFrameCache
【发布时间】:2012-09-12 09:25:27
【问题描述】:

我想知道在不使用 CCSpriteBatchNode 的情况下缓存精灵表和逐帧访问精灵是否有任何好处?

在我的游戏的某些部分,精灵批处理节点很有用,因为屏幕上有很多东西,但在另一部分它不是,因为只有一些东西,而且对层有要求,所以 CCSpriteBatchNode 不会有用。然而,为了保持一致性,我想对我的所有精灵使用 Sprite Sheets,所以我开始怀疑我是否还能从中获得任何好处? (或者更糟的是它可能会慢一些......)

【问题讨论】:

    标签: cocos2d-iphone


    【解决方案1】:

    将所有精灵放入您所称的纹理图集或精灵表中无疑是有好处的。纹理以二维的幂存储在内存中。因此,如果您有一个 129 像素 x 132 像素的精灵,它将以 256 像素 x 256 像素的形式存储在内存中,这是最接近 2 大小的幂。如果你有很多精灵,那么就会用掉很多额外的内存。

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

    您可以在本教程中阅读有关它的更多详细信息 http://www.raywenderlich.com/2361/how-to-create-and-optimize-sprite-sheets-in-cocos2d-with-texture-packer-and-pixel-formats

    【讨论】:

    • 我明白了,即使我不使用 CCSpriteBatchNode,我也会收到此好处?
    • 是的,批处理节点减少了绘图调用,因此不使用会增加每帧的绘制次数。当您从同一个文件(例如粒子)创建大量精灵时,批处理节点也很棒,因为您只在内存中存储一​​次精灵。
    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 2021-10-30
    • 2010-12-09
    • 2018-03-02
    • 2019-06-20
    • 2014-10-07
    • 2018-04-08
    • 2011-10-26
    相关资源
    最近更新 更多