一、如何优化cocos2dx(高级)的内存使用
P=93一、内存优化的原理为了优化应用内存,你要知道你的应用最消耗内存的是什么,答案是纹理!它占据了几乎90%的应用程序内存。那么就要尽量减少我们应用的纹理内存使用量,否则我们的应用进程可能会被系统杀死。为了减少内存警告,这里我们给出两个关于cocos2dx游戏内存优化的通用准则。1)了解瓶颈,然后解决什么样的纹理消耗大部分应用的内存?或者说这些纹理消耗了多少内存?你不必手工计算或猜测。我们正好有一个工具。它是苹果的开发工具——Allocations &;泄漏,在xcode中,你长按运行按钮,选择Profile来启动这两个工具。这里我们有一个截图:你可以使用分配工具来计算你的应用程序的内存使用情况,并检查内存泄漏。你也可以使用一些代码来获得一些关于游戏内存使用的有用信息。下面这段代码就够了:cctexturecache::sharedtexturecache()-> dumpCachedTextureInfo();如下图:当你调用这些代码,在调试模式下运行你的游戏时,会看到一些格式化的日志信息Cocos2d:" cc _ fps _ images " RC = 5 ID = 3 256 x32 @ 16 bpp = > 16 KB Cocos2d:Cocos2d:" XXX/HD/actor . PVR . ccz " RC = 1059 ID = 4 2048 x 2048 @ 32 bpp = >16384 kb cocos2d:cocos2d:cctexturecache转储调试信息:2textures,对于16400kb (16.02mb)这些日志显示了纹理的名称、引用号、id、大小和位值,最重要的是,它显示了内存使用情况。如上,cc_fps_images消耗16KB,actor.pvr.ccz消耗16M内存。2)不要过度优化这是一个通用的优化规则。做内存优化的时候,要有所取舍。因为有时候画质和画面内存占用是对立的两面。所以不要过度优化。二、内存优化级别这里我们把cocos2dx内存优化分为三个级别。在每个层面上,我们都有不同的观点和一些策略上的改变。1,cocos2dx客户端级别这是我们可以关心的最重要的优化级别。因为我们在cocos2dx引擎上开发游戏,所以引擎本身提供了很多可选的优化方案。在这个层面上,我们可以先做最多的工作,我们来看看纹理优化。为了优化纹理内存的使用,我们必须知道哪些因素影响内存的使用。有三个因素会影响纹理的内存使用。纹理格式(压缩或未压缩)、颜色、大小。我们可以使用PVR格式的纹理来减少内存使用。最推荐的纹理格式是pvr.ccz,每种颜色的bit值越高,画质越好。但也消耗了大量内存。然后我们用RGBA4444色深的纹理代替RBGA8888,这样会消耗一半的内存。我们还会发现,大纹理也会导致内存相关的问题。那你最好用中号的。其次,让我们做一些关于声音的事情。有三个因素会影响文件内存的使用。是音频文件格式、比特率和采样率。我们最想要mp3格式的音频文件。因为安卓和ios都支持。而且还压缩了,硬件加速了。您应该确保背景音乐文件的大小低于800KB。最简单的办法就是减少背景音乐的播放时间,反复调用。你应该保持你的音频文件的采样率在96-128kbps之间,44kHz的比特率就足够了。最后说一下字体和粒子系统优化。这里我们有两个建议:使用BM字体显示游戏比分时,选择你的图片文件中最小的数字字符。例如,如果只想显示数字,可以删除所有字符。在粒子系统中,我们可以减少粒子的数量来减少内存的使用。2、cocos2dx引擎级别如果你不擅长OpenGLES和游戏引擎内核,可以把这部分留给引擎开发者。如果你是开源游戏引擎爱好者,请告知引擎开发者你是否做过一些引擎级别的优化!3、c++语言水平在这个层面,我的建议是写一些没有内存泄漏的代码。使用cocos2dx引擎内存管理工具,尽最大努力避免内存泄漏。三、建议和技巧1,逐帧加载游戏资源。2.减少绘图调用。