# 启动性能优化
小游戏"即点即玩",玩家对启动时长非常敏感,过长的启动会导致显著流失。未经优化的 Unity WebGL 游戏启动时间可能是普通小游戏的数倍,因此启动优化应作为上线前的重点工作。
# 一、启动耗时的构成
小游戏启动主要由三部分组成:
- 首资源包下载
- WASM 代码下载与编译
- 引擎初始化与开发者首帧逻辑
建议将首屏启动时间控制在 5~10s 甚至更短。
# 二、分阶段优化
# 2.1 首资源包
首资源包(webgl/Build 下的 data 文件)包含引擎默认资源、IL2CPP metadata、内置 shader、首场景及 Resources 资源等。它在启动前期下载,体积直接影响启动速度。
- 务必压缩传输:转换面板勾选"压缩首资源包",或在 CDN 对首资源包开启 gzip / br 压缩;建议将首包网络传输大小控制在 3~5MB。
- 分离非必需资源:把首屏不需要的资源改为按需加载。
- 精简中文字体:中文字体体积大,请尽量使用 2~3MB 以内的精简字体,详见音视频与字体适配。
移动网络下玩家下载速度差异较大,部分玩家网速较低,首包越小越有利于留存。
# 2.2 WASM 代码
WASM 包体大小直接影响代码下载时长与初始化编译时间:
- 转换工具会自动对代码包做 br 压缩。
- 建议原始代码包(
webgl/Build下的 code 文件)不超过 30MB;勾选 "Strip Engine Code" 并将 "Managed Stripping Level" 设为 High。 - 强烈建议使用 WASM 代码分包工具将代码包拆分,先加载较小的首包快速进入主场景,可有效降低内存占用与编译时间。
- Unity 2021+ 可将 PlayerSettings 的 IL2CPP Code Generation 设为更小尺寸(Faster (smaller) builds)以减少函数量。
# 2.3 引擎初始化与首帧逻辑
MonoBehaviour的首帧Start/Awake应尽量精简,优先把画面呈现出来。- 初始场景不宜过大,通常只呈现 Splash / Loading 场景即可。
- 需要后续加载的内容采用分帧策略,切勿在
Start/Awake中阻塞。
# 三、资源预下载
在启动加载过程中常存在"CPU 繁忙但网络空闲"的时机,可利用这一阶段预下载后续资源,提升主场景等内容的载入速度。在转换面板的「预下载列表」中配置需要预下载的资源即可。