提高游戏运行效率(帧率/内存)
当使用vivo调试器打开导出的小游戏,会显示如下信息
其中两个指标需要开发者注意下,其中FPS显示的是当前游戏运行过程中的实时帧率,当帧率低于15画面出现卡顿,需要同时关注一下总内存是否过大,当总内存在2G左右时,需要根据以下手段进行相应的优化 ,通常来讲Unity WebGL是APP手游性能的1/3。
帧率低问题排查
游戏运行在浏览器比较流畅,但在手机上比较卡顿时,可以排查Application.targetFrameRate帧率是否设置偏小,确认打包是否开启了垂直同步等功能;
当帧率较低时需要看下导出设置,是否开启了Development Build等调试工具,开启后会增加导出代码量,运行会非常卡顿。
优化建议
图片资源关闭MipMap功能,对于UI贴图来说,我们不必应用mipmap,因为一般的UI都是“平铺”在正交摄像机视口的,和摄像机木有距离这一概念,所以我们大可以把UI贴图的mipmap选项去掉,以节省内存;
及时卸载使用后的资源,如AssetBundle.Unload卸载AssetBundle;
合理设置纹理maxsize可以减小纹理资源大小,最大不要超过1024;
使用资源预下载能力,提升游戏流畅度;
文件操作尽量替换成小游戏平台的文件操作能力,C#SDK已经提供相应的API;
贴图尽量不使用可写属性;
Unity WebGL环境的lua不支持JIT,因此需要避免用于重度逻辑;
大量DC会造成非常大的CPU压力,当场景渲染物件过多时应该采取适当的措施减少Drawcall;
纹理压缩建议使用unity2021及以上版本自带的ASTC模式,默认推荐使用 Block Size 8x8 格式,开发者应根据实际调试后运行效果按需配置,可以有效减少运行时的内存占用;
其他建议可参考Unity项目常规优化手段。