cocos2d优化内存使用

tech2022-09-23  71

内存优化水平

在此将ccos2d-x内存优化分为三个等级。每个等级都有不同的说明,策略也有点不一样。

客户端等级

这是最重要的的优化等级。因为我们要在Cocos2d-x引擎顶层编译游戏,引擎自身会提供一些优化选项。 在这个等级我们可以进行大部分优化。简而言之,我们可以优化纹理、音频、字体及粒子的内存使用。

首先看纹理优化,为了优化纹理内存使用,必须知道什么因素对纹理内存使用的影响最大。主要有3个因素会影响纹理内存,即纹理格式(压缩还是非压缩)、颜色深度和大小。我们可以使用PVR格式纹理减少内存使用。推荐纹理格式为pvr.ccz。纹理使用的每种颜色位数越多,图像质量越好,但是越耗内存。所以我们可以使用颜色深度为RGB4444的纹理代替RGB8888,这样内存消耗会降低一半。此外超大的纹理也会导致内存相关问题。所以最好使用中等大小的纹理。

音频优化,3个因素会影响音频文件的内存使用,即音频文件数据格式、比特率及采样率。推荐使用MP3数据格式的音频文件,因为Android平台和iOS平台均支持MP3格式,此外MP3格式经过压缩和硬件加速。背景音乐文件大小应该低于800KB,最简单的方法就是减少背景音乐时间然后重复播放。音频文件采样率大约在96-128kbps为佳,比特率44kHz就够了。

字体和粒子优化,在此有两条小提示:使用BMFont字体显示游戏分数时,请尽可能使用最少数量的文字。例如只想要显示单位数的数字,你可以移除所有字母。至于粒子,可以通过减少粒子数来降低内存使用。

引擎等级

如果你不是一个OpenGLES及游戏引擎高手,可以略过这部分。因为Cocos2d-x是一个开源游戏引擎,如果你在引擎等级中做了什么优化,请告知我们! 欢迎任何改进和代码。

C++语言等级

在这个等级中,建议是编写无内存泄露代码。遵循Cocos2d-x内置的内存管理原则,尽量避免内存泄露。

提示和技巧

1.一帧一帧载入游戏资源

2.减少绘制调用,使用“CCSpriteBatchNode”

3.载入纹理时按照从大到小的顺序

4.避免高峰内存使用

5.使用载入屏幕预载入游戏资源

6.需要时释放空闲资源

7.收到内存警告后释放缓存资源.

8.使用纹理打包器优化纹理大小、格式、颜色深度等

9.使用JPG格式要谨慎!

10.请使用RGB4444颜色深度16位纹理

11.请使用NPOT纹理,不要使用POT纹理

12.避免载入超大纹理

13.推荐1024*1024 NPOT pvr.ccz纹理集,而不要采用RAW PNG纹理

最新回复(0)