相比原生 App,Unity WebGL 导出的小程序存在性能瓶颈,主要原因如下:
因此,WebGL 小游戏需要从启动、加载、运行多个方面进行专项性能优化。
Unity WebGL 启动时间较长,建议使用图片或视频做启动封面,用于留住用户,改善加载体验。
详见:定制启动封面
参考文档:
使用 IL2CPP 构建选项:Faster (Smaller) Builds
小游戏资源不能像 App 一次性下载,推荐使用 AssetBundle / Addressable 进行延迟加载。
AA/AB 包是常规的分包解决方案,关于他们的选择对于轻度游戏来说两者没有特别要求,倒是功能强大的 AA 包 使用门槛更低一些,而对于重度游戏,平台目前所反馈到的结论是使用 AB 包 的性能要比 AA 包 更好,AA 包较大项目时生成的未压缩的 catalog 较大,加载效率低,改用 AB 包后,效果提升明显。
参考:
maxSize
控制在 1024 以内,小游戏环境适当降低画质字体文件压缩前最大不超过 4MB
纹理优化工具:操作路径:顶部菜单栏 -> 联盟快游戏 -> 纹理优化
接入资源缓存策略,对于二次进入游戏可以快速使用本地缓存
Unity 自有 API 会将 PlayerPrefs 写入 IndexedDB,导致性能消耗大。
Unity 插件 C# SDK 已优化此逻辑,支持无感替换适配方案,无需改动原有代码。
先下载该工具并集成进项目中,会在 VIVO-GAME-SDK 增加 debugger 文件目录,其中有个 Debugger 预制体需要开发者放入到游戏的场景中:
包括:
FPS 显示的是当前游戏运行过程中的实时帧率,当帧率低于 15 画面出现卡顿;
总内存 当总内存在 2G 左右时,需要根据以下手段进行相应的优化 ,通常来讲 Unity WebGL 是 APP 手游性能的 1/3。
Application.targetFrameRate
设置合适帧率JS Profiler
排查卡顿问题图片资源关闭 MipMap 功能,对于 UI 贴图来说,我们不必应用 mipmap,因为一般的 UI 都是“平铺”在正交摄像机视口的,和摄像机没有距离这一概念,所以我们大可以把 UI 贴图的 mipmap 选项去掉,以节省内存;
卸载不用的 AssetBundle 资源
参考资料: