Unity WebGL 首场景启动优化
在timelog中呈现的首场景耗时即为引擎初始化与开发者首帧逻辑,关于该阶段耗时,开发者需要注意的是:1.MonoBehaviour脚本的首帧Start/Awake应足够少逻辑,优先将画面呈现
2.初始场景不宜过大,通常呈现Splash场景即可
3.初始场景中需要后续主场景或配置加载时可采取分帧策略,切勿在Start/Awake阻塞
下面介绍如何在小游戏下,通过Profile的方式,对首场景耗时进行针对性优化。
Unity Profile
- 1.构建产物时,勾选构建选项 "Development"、"Connect With Profiler",构建小游戏产物
Unity | |
团结 |
- 2.打开构建电脑上的Unity Profiler窗口
标题栏 -> Window -> Analysis -> Profiler
- 3.启动游戏
建议启动游戏前,清空一次历史 profile 数据
启动游戏后,游戏将会自动连接到构建机器上的Profiler窗口,注意只启动一个游戏实例
- 4.如果想要连接到其他电脑上Unity的Profiler窗口,可以修改构建产物zip里的game.js文件
修改完成后,重新压缩成zip包,然后在工程详情里,选择新的zip包启动游戏:
【内测】混合引擎 真机调试 Profile
Q:混合引擎是什么?
A:混合引擎将抖音平台Unity WebGL小游戏的产物形式,向普通小游戏进一步靠近,采用game.js作为启动入口,开发者可直接修改Unity产物内容(而不是原来的zip包),也可以使用原来的普通小游戏真机调试功能(仅Android)。
Q:怎么使用混合引擎形式的Unity小游戏?
在混合引擎 + Android小游戏环境下,Unity小游戏支持真机调试,可以通过真机调试采集Profile数据,使用方法如下:
- 1.构建混合引擎Unity小游戏产物,导入IDE后,生成真机调试二维码,Android扫码启动:
- 2.Android启动游戏后,IDE会自动打开真机调试页,点击Profiles标签页:
- 3.勾选Chart展示火焰图:
注意:截止 2025年8月11日,抖音小游戏暂不支持wasm符号映射,因此上图中看到的仍然是
wasm-function[38192]
这样的函数id,可以在符号表中,手动查找函数id对应的原始函数名:
混合引擎 启动阶段 Profile
上面一个章节中介绍到的Profile,是在游戏启动一段时间后,才开始收集数据,如果需要profile游戏最开始启动阶段的数据,可以修改game.js中的代码,保证在真机调试连接、开启profile后,再执行Unity启动逻辑。由于混合引擎的Unity启动入口和普通小游戏一致,都是从game.js启动,因此可以将入口函数,放到首次触摸后,再启动游戏,如下图:
然后开始真机调试启动,start profile,最后触摸屏幕,触发Unity入口函数启动,这样就可以收集到启动Unity的性能数据: