小游戏内存优化与性能优化 / DrawCall

二、性能优化

目前小游戏的性能瓶颈大多在JS层面,可以使用Chrome先去profiles性能热点,然后针对性地去做优化。

这里给出几点优化建议:

1、游戏中频繁更新的文字,推荐使用BMFont,系统字体会比较消耗性能。

2、优化Drawcall,尽可能减少Drawcall数量。

3、减少Mask组件的使用,该组件会导致游戏中的Drawcall数量变多。

4、禁用引擎的culling,禁用方法cc.macro.ENABLE_CULLING = false。

5、如果使用物理引擎,可以把物理引擎的step间隔调大。

6、优化节点树,减少节点数量。

7、场景中不要挂载过多的Prefab,可适当将一些Prefab变成动态加载的。

三、包体优化

因为微信小游戏对于包体有4M的限制,最近才刚开始升到8M,但是必须要分包,而且每一个分包的大小还是不能超过4M。

下面给出一些优化建议:

1、首包中不要包含过多的资源,如果一定要包含,请务必压缩。对于背景图片可以使用JPG,PNG图片可以使用png8进行压缩。

2、代码必须使用uglify进行压缩,尤其是第三方库,游戏代码如果使用release构建引擎有做uglify。如果想进一步压缩代码体积,需要考虑使用Google Closure Compiler进行高级压缩。

3、不需要动态加载的图片资源不要放到resources目录,放到此目录的资源在构建导出的时候,会生成资源映射关系到Settings.js中,会导致该Settings.js文件变大。另外为了防止缓存问题,需要使用md5,此时Settings.js文件会进一步膨胀。过气的活动Prefab也可以移出resources目录,所以定期资源清理也是必要的。

4、Settings.js文件优化,可以自己写脚本把md5Map里面的rawAssets的md5映射存到原本的rawAssets中,然后在boot.js里面还原md5Map即可。优化之后的Settings.js长这个样子:
在这里插入图片描述

boot.js里面还原md5AssetMap的的代码:
在这里插入图片描述
5、一定要使用release模式构建,这种方式构建出来的json资源会压缩,Settings.js也会优化。

6、对于引擎不使用的模块进行裁剪,这个可以减少引擎大小。

1 面试问: why2张不同合图 会打断渲染 / 渲染机制:中命令都有啥
2 在这里插入图片描述

发布了205 篇原创文章 · 获赞 39 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/u013321328/article/details/101154311
今日推荐