我是Cocos2D和CocosBuilder的新手,我有一些关于内存使用的问题。
1)在CocosBuilder(或Cocos2D)中,如果我在同一个场景中对所有CCSprite对象使用相同的纹理图集(spritesheet),是否会为每个sprite节省内存使用量? 确切地说,如果我使用一个4k * 4k纹理,游戏是否只需要一个纹理图集的内存(例如4k * 4k * 32位)?
2)我可以为不同的精灵使用不同的纹理模式来节省内存吗? 例如,对背景图像使用无alpha模式。 换句话说,Cocos2D可以在同一个场景中处理不同的纹理模式吗?
3)我必须在场景中实现一个包含大约100个对象的游戏,总共有3个场景。 现在,同一场景中的所有对象都使用相同的spritesheet。然而,在场景之间切换几次后,游戏崩溃了。每次我收到mem-warning消息。 解决此问题的最佳方法是什么? 我试图转储所有这些缓存但仍然崩溃。
非常感谢!
答案 0 :(得分:1)
1)纹理只加载一次,无论从中抽取多少个对象。通常,您不会使用单个纹理保存(大量)内存,但是通过尽可能少的纹理图集而不是单个图像文件纹理来提高加载时间和渲染性能。
2)是的。例如,你可以在同一个场景中使用RGB565(无alpha),RGB5551(bool alpha)或RGBA4444 / RGBA8888纹理,没问题。
3)使用仪器。检查是否有泄漏。如果您不使用ARC,现在是时候切换了。 PS:不要清除缓存,这只是浪费时间和内存,因为最终需要重新加载纹理。如果你想要发布一个纹理,你肯定当时还没有使用它,并且不会在不久的将来使用它,那么就解开这些纹理,只有那些纹理。