快速加载对于基于 Web 的应用程序至关重要,尤其是在移动设备上,移动设备可能需要在缓慢的移动网络中下载应用程序资源。缓慢加载可能导致用户体验不佳和高跳出率。因此,为移动端优化 Web 构建非常重要。
基于 Web 的移动端应用程序在具有小型构建和高性能代码时性能最佳,因为要下载的数据更少,要存储在用户设备上的数据更少,在初始化期间要加载的数据更少,因此可以加快加载。
对于并非特定于移动端的 Web 优化,请参阅优化 Web 构建。
使用以下建议设置可针对移动端 Unity Web 平台进行优化:
| 建议 | 描述 |
|---|---|
| 优化大小 | 禁用开发构建设置并根据磁盘大小优化构建 (Disk Size with LTO)。 |
| 使用 Brotli 压缩 | 使用 Brotli 压缩方法来压缩播放器构建。 |
| 使用 Unity Addressables 系统 | 使用用于资源的 Unity Addressables 系统。 |
| 优化音频文件 | 减少音频占用的磁盘空间。 |
| 优化项目中的图形 | 减少图形占用的磁盘空间。 |
| 更改图形质量级别 | 降低质量级别以加快构建速度。 |
较小的构建大小更适合移动端,因为要下载的数据更少,这通常会缩短加载时间并减少用户设备上的存储占用量。
要尽可能缩小构建,请禁用开发构建设置并根据磁盘大小优化构建:
转到文件 (File) > 构建配置文件 (Build Profiles)。
选择 Web。
如果启用了开发构建 (Development Build),请将其禁用。
将代码优化 (Code Optimization) 设置为具有 LTO 的磁盘大小 (Disk Size with LTO)。
注意:具有 LTO 的优化构建可能需要很长时间。仅在最终发布中或需要测试性能时才使用此优化。在开发期间使用更快的构建选项。
有关影响构建大小的其他设置,请参阅用于优化 Web 构建的建议播放器设置以及删除 Web 构建中未使用的资源。
如果您有一个用于编辑设置的脚本,并希望使用 C# 启用具有 LTO 的磁盘大小 (Disk Size with LTO) 设置,请在脚本中添加以下代码:
// Set Platform Settings to optimize for disk size (LTO)
UnityEditor.WebGL.UserBuildSettings.codeOptimization = UnityEditor.WebGL.WasmCodeOptimization.DiskSizeLTO;
Brotli 压缩是 Unity 在构建时执行预压缩的设置。Brotli 压缩文件小于 gzip 压缩文件,因此可以减小构建大小。
但是,Brotli 需要更长的压缩时间。此外,Chrome 和 Firefox 仅原生支持基于 HTTPS 上的 Brotli 压缩。如果不适用于您的应用程序,请改用 Gzip 压缩。
要使用 Brotli 压缩设置,请执行以下操作:
确保 Web 服务器配置为使用正确的编码用于 Brotli 文件。有关更多详细信息,请参阅部署 Web 应用程序。
进入播放器 (Player) 设置(菜单:编辑 (Edit) > 项目设置 (Project Settings) > 播放器 (Player))。
单击 Web 设置 (Web settings) 选项卡。
展开发布设置 (Publishing Settings) 部分。
将压缩格式 (Compression Format) 设置为 Brotli。
如果您有项目设置脚本并希望使用 C# 更改压缩格式,请在脚本中添加以下代码:
// Set the compression format to Brotli
PlayerSettings.WebGL.compressionFormat = WebGLCompressionFormat.Brotli;
移动端浏览器应用程序需要较短的加载时间来降低用户跳出率。为了缩短初始化时间,而不是在启动时加载所有资源,请使用可寻址资源,从而仅在应用程序需要时才加载资源。将某些资源的加载延迟到游戏加载之后。
对于这些更改,请确保使用您创建的任何新的可寻址资源文件来更新 StreamingAssets/aa/catalog.json。
有关可寻址资源以及如何设置可寻址资源的更多信息,请参阅可寻址资源。
要进一步优化可寻址资源,请尝试以下操作:
将可寻址资源分组,从而减少资源包的数量。资源包的数量越少,构建大小就越小。有关可寻址资源组以及如何创建可寻址资源组的更多信息,请参阅管理和创建组。
如果项目中有很多音频文件,最好压缩文件以减小音频文件的大小。但是,压缩音频可能会导致音频质量降低。有关压缩格式的信息,请参阅音频剪辑。
复杂的图形可能会耗尽资源并使构建增大且性能降低。但是,可以通过一些方法来优化图形以减小构建大小并提高性能。要优化构建中的图形,请尝试以下操作:
ASTC 压缩纹理类型提供较小的纹理大小并适当缩短下载时间。如果不支持 ASTC,请考虑使用 ETC2。有关更多信息,请参阅纹理格式。
要使用 ASTC 压缩纹理,请执行以下操作:
在项目中选择纹理资源以打开纹理导入设置 (Texture Import Settings) 窗口。
选择 Web 设置 (Web settings)。
启用 Web 覆盖 (Override For Web)。
将格式 (Format) 设置为 ASTC 块选项之一。
如果使用 ASTC 压缩纹理,请尝试使用更大的块大小进行压缩。ASTC 支持 4x4 到 12x12 纹素之间的块大小。较大的块大小会导致纹理质量降低,但构建也会减小。为了在质量和大小之间实现良好平衡,从而优化移动网络中的下载时间,请考虑使用 8x8。如果下载速度仍然太慢,请尝试增加块大小。有关更多信息,请参阅各平台的推荐、默认和支持的纹理格式。
要设置 ASTC 压缩纹理的块大小,请执行以下操作:
在项目中选择纹理资源。将显示纹理导入设置 (Texture Import Settings)。
选择 Web 设置 (Web settings)。
启用 Web 覆盖 (Override For Web)。
将格式 (Format) 设置为较大的 ASTC 块选项之一,例如 RGB(A) 压缩 ASTC 8x8 块 (RGB(A) Compressed ASTC 8x8 block)。
建议的最佳做法是将图形质量级别设置为速度最快的选项。速度越快的选项会产生越小的构建。
要更改图形质量级别,请执行以下操作:
进入质量 (Quality) 设置(菜单:编辑 (Edit) > 项目设置 (Project Settings) > 质量 (Quality))。
选择低 (Low) 或极低 (Very Low) 质量级别。
但是,最快速度设置可能会影响应用程序的视觉效果,因此请确保应用程序的外观符合您的要求。
如果您有项目设置脚本并希望在脚本中更改项目的质量级别,请添加以下代码:
// Set the quality level to Very Low (index 0)
QualitySettings.SetQualityLevel(0, true);
SetQualityLevel() 函数将 Quality Level 矩阵的索引作为值。在这种情况下,SetQualityLevel(0, true) 是极低 (Very Low) 设置,或 Quality Level 矩阵中的第一个选项。要将其更改为低 (Low) 或第二个选项,请改用 SetQualityLevel(1, true)。