1.最消耗内存的是什么,是纹理(textures)。
一般来说,我们的游戏中纹理消耗了我们80%以上的内存!
所以纹理是我们减少内存的首要目标。
减少纹理对内存压力的方法:
1)避免连续加载PNG和JPG类型的纹理(至少相隔一帧);
首先cocos2D中纹理的加载分为2个阶段:
第一步,从图片文件中创建一个UIImage对象;
第二步,以这个创建好的UIImage对象来创建CCTexture2D对象。
这就相当于纹理被加载的时候,它会消耗两倍于它本身大小的内存。
2)尽量不使用JPG;
cocos2D-iPhone在加载JPG类型时会实时转换成PNG,即在cocos2D-iPhone中JPG将消耗两倍于它本身大小的内存。
3)按照纹理size大小,从大到小来加载;
4)避免在内存警告的时候清理缓存;
5)尽量少使用全局变量和静态变量;
6)对称型图片可以使用一半来完成加载;
7)检查声音文件的内存使用,并减小声音文件大小;
8)使用场景预加载;
9)减少Tilemap的使用
10)Streaming MP3 Files
mp3文件的播放,首先是加载到内存中,然后解码为未压缩的声音buffer,最后再播放。
CocosDenshion的SimpleAudioEngine的playBackgoundMusic是流式播放mp3文件的。
流试处理有两个优点:1.更小的内存足迹。2.解码mp3文件采用ios硬件,而不是cpu;
11)不要轻易的清楚纹理缓存;
12)纹理资源打包时可以使用Texture Packer进行打包;
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!