2013-04-30 69 views
0

我是Cocos2D和CocosBuilder的新手,我有几个关于内存使用的问题。如果我在同一场景中为所有CCSprite对象使用相同的纹理地图集(spritesheet),它是否会为每个sprite节省单独纹理的内存使用量?准确地说,如果我使用一个4k * 4k纹理,游戏是否只​​需要一个纹理地图集(例如4k * 4k * 32位)的内存?Cocos2D/CocosBuilder纹理图集内存使用

2)我可以针对不同的精灵使用不同的纹理模式来节省内存吗?例如,对于背景图像使用无alpha模式。换句话说,Cocos2D可以在同一场景中处理不同的纹理模式吗?

3)我必须在一个场景中实现一个包含100个物体的游戏,总共有3个场景。 现在,同一场景中的所有对象都使用相同的spritesheet。尽管如此,游戏在场景之间切换几次后仍然崩溃。每次我收到mem警告消息。 解决此问题的最佳方法是什么? 我试图转储所有这些缓存但仍然崩溃。

非常感谢!

回答

1

1)纹理只加载一次,不管有多少个对象从中抽取。一般来说,使用单一纹理不会节省(很多)内存,但是通过从尽可能少的纹理图集绘制而不是单独的图像文件纹理来提高加载时间和渲染性能。

2)是的。例如,您可以在同一场景中使用RGB565(无alpha),RGB5551(bool alpha)或RGBA4444/RGBA8888纹理,没有问题。

3)使用仪器。检查泄漏。如果你不使用ARC,现在是时候切换。 PS:不要清除缓存,这只是浪费时间和内存,因为最终纹理需要重新加载。如果你想释放一个纹理,那么你肯定在当时没有被使用,并且不会在不久的将来使用,然后解开那些纹理,并且只是那些纹理。

+0

谢谢!这有很大帮助。我们的游戏不会经常重复使用纹理。所以,我认为我们可以清除一些不会很快用到的东西。 – BiGGA 2013-05-01 16:10:21