我是Cocos2D和CocosBuilder的新手,我有几个关于内存使用的问题。
1)在CocosBuilder (或Cocos2D )中,如果我对同一场景中的所有CCSprite对象使用相同的纹理图集(精灵工作表),是否会比为每个精灵使用不同的纹理节省内存使用量?准确地说,如果我使用一个4k*4k纹理,游戏是否只需要一个纹理图集的内存(例如4k * 4k * 32位)?
2)不同的精灵可以使用不同的纹理模式来节省内存吗?例如,对背景图像使用no-alpha模式。换句话说,Cocos2D可以处理同一场景中的不同纹理模式吗?
3)我必须在一个场景中实现一个大约有100个对象的游戏,总共有三个场景。现在,同一场景中的所有对象都使用相同的spritesheet。尽管如此,在场景之间切换了几次后,游戏还是崩溃了。每次我收到我的警告信息。解决此问题的最佳方法是什么?我试图丢弃所有这些缓存,但仍然崩溃。
非常感谢!
发布于 2013-05-01 09:03:46
1)一个纹理只加载一次,无论从中绘制多少对象。通常,使用单个纹理不会节省(大量)内存,但可以通过从尽可能少的纹理图集而不是单个图像文件纹理绘制来提高加载时间和渲染性能。
2)可以。例如,在同一场景中可以有RGB565 (无alpha)、RGB5551 (布尔Alpha)或RGBA4444/RGBA8888纹理,没有问题。
3)使用仪器。检查是否有泄漏。如果你没有使用ARC,现在是时候换了。注:不要清除缓存,这只会浪费时间和内存,因为最终纹理需要重新加载。如果你想释放一个纹理,你确定当时没有使用,并且在不久的将来也不会使用,那么取消缓存这些纹理,只缓存那些纹理。
https://stackoverflow.com/questions/16310143
复制相似问题