二、性能优化
目前小游戏的性能瓶颈大多在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