cocos 性能优化分为四部分:渲染优化、包体优化、内存优化和cpu优化

首先是渲染优化

1、合图

静态合图:使用Texture Packer或者自动图集,将碎图打包到一张图集里

动态合图:在精灵资源的属性检查器中勾选packable(默认勾选)才能开启动态合图,小游戏和原生平台默认关闭动态合图,需要手动开启。


 

2、节点的显示和隐藏 少用active的true或者false,active的使用会重新渲染节点数,可以用位置或者透明度来代替。


 

3、减少draw call的次数。draw call是一种行为指令,即cpu调用图形api,命令gpu进行图形绘制。由于draw call带来的cpu 和gpu的渲染状态切换消耗,往往需要通过批次合并来降低draw call的调用次数。引擎默认会自动合批,但是需要保证相邻节点的渲染状态是相同,避免打断合批的情况,包括纹理的状态(相邻的渲染节点使用的图片不是同一张-->图集的作用)、混合模式(blend mode)、模板状态( Mask、Graphics、ScrollView),延申一下(TiledMap、Spine 和 DragonBones 这三个中间件组件是遵循自己的内部合批机制)

了解的打断合批的情况,我们就可以给出解决方案了。

1、使用静态合图,将相邻的渲染节点用图打包到同一个图集里。

2、尽量少修改混合模式。

3、动态变化的字体使用fnt字体。

4、会打断合批的渲染组件放到节点的最后面。

包体的优化

1、图片

尽量少使用大图,可以用拼接的方式或者九宫格的方式,图片的格式 jpg占用的内存比png占用的小,可以用图片压缩工具对图片进行压缩 降低分辨率。

2、声音

声音格式 占用内存 mp3<ogg<wav

3、引擎代码

没有使用的到模块可以去掉

内存优化

1、静态资源优化,自动释放场景资源,在场景中勾选自动释放资源选项,当场景跳转时自动释放资源。

2、动态资源优化,引用计数来管理内存,创建时计数为1,调用retain计数加1,release计数减1,为0时释放内存。常见的addChild和removeChild会分别加1减1。autoRelease把节点加到自动释放池中,在当前帧结束时,池中的节点会调用一次release,起到延时自动释放的作用。

CPU优化
1、代码优化,

2、游戏帧率优化

 

Logo

这里是一个专注于游戏开发的社区,我们致力于为广大游戏爱好者提供一个良好的学习和交流平台。我们的专区包含了各大流行引擎的技术博文,涵盖了从入门到进阶的各个阶段,无论你是初学者还是资深开发者,都能在这里找到适合自己的内容。除此之外,我们还会不定期举办游戏开发相关的活动,让大家更好地交流互动。加入我们,一起探索游戏开发的奥秘吧!

更多推荐