使用以下建议的播放器设置可针对 Unity Web 平台优化构建。
在编辑 (Edit) > 项目设置 (Project Settings) > 播放器 (Player) 下找到这些设置。有关每个设置的更多信息,请参阅播放器设置中的详细信息。
| 设置 | 建议设置 | 描述 |
|---|---|---|
| API Compatibility Level | .NET Standard 2.1 | 生成较小的构建。 |
| IL2CPP Code Generation | Faster (smaller) builds | 生成针对构建大小和迭代进行优化的代码。 |
| Managed Stripping Level | High | Unity 会进行高级别的托管剥离以创建较小的构建。 |
在发布设置 (Publishing Settings) 部分中配置以下建议设置:
| 设置 | 建议设置 | 描述 |
|---|---|---|
| Compression Format | Brotli | Brotli 压缩的文件较小。 |
| Data Caching | 启用 | 运行速度更快,因为在后续运行中无需再次下载缓存的数据(除非内容已更改)。 |
| Debug Symbols | Off | 调试符号可能会减慢应用程序的速度。 |
| Enable Exceptions | None | 对于没有开销的异常,请改为启用目标 WebAssembly 2023 (Target WebAssembly 2023)。 |
| Target WebAssembly 2023 | 启用 | Web Assembly 2023 功能集包含有助于优化项目的功能。 |
| Maximum Memory Size (MB) | 输入所需的内存量(以 MB 为单位)。 | Unity Web 最多支持 4096 MB 的构建内存。 |
使用 API 兼容性级别 (API Compatibility Level) 设置以选择可在项目中使用哪些 .NET API。建议设置为 .Net Standard 2.1,因为此设置会生成较小的构建并具有跨平台支持。但是,您需要检查平台是否完全支持 .Net Standard 2.1。有关其他选项,请参阅 Web 播放器设置。
要改为通过脚本更改 API 兼容性级别,请将以下代码添加到脚本之一:
PlayerSettings.SetApiCompatibilityLevel(namedBuildTarget, ApiCompatibilityLevel.NET_2_0);
使用 IL2CPP 代码生成 (IL2CPP Code generation) 设置以配置 Unity 管理__ IL2CPP__种由 Unity 开发的脚本后端,可在为某些平台构建项目时替代 Mono。更多信息
See in Glossary 代码生成的方式(如果您的项目使用 IL2CPP 脚本后端)。
建议使用较快(较小)(Faster (smaller)) 构建选项,因为它可以创建较小的构建并生成更少的代码,从而缩短构建时间。较快构建在 Web 应用程序中至关重要。但是,此设置可能会降低运行时性能。
有关更多信息,请参阅 IL2CPP 概述。
要改为通过脚本启用此设置,请将以下代码添加到脚本之一:
PlayerSettings.SetIl2CppCodeGeneration(namedBuildTarget,
Il2CppCodeGeneration.OptimizeSize);
使用托管剥离级别 (Managed stripping level) 以配置 Unity 链接器进程从项目使用的托管 DLL 中剥离未使用代码的程度。建议设置为高 (High),因为剥离代码可以使可执行文件显著减小,这在 Web 应用程序中很重要。但是,可能的副作用包括:
某些方法的托管代码调试可能无效。
可能需要维护自定义 link.xml 文件。
某些反射代码路径的行为可能不同。
有关更多信息,请参阅托管代码剥离。
要改为通过脚本更改此设置,请将以下代码添加到脚本之一:
PlayerSettings.SetManagedStrippingLevel(namedBuildTarget,
ManagedStrippingLevel.High);
选择要用于发布构建文件的压缩格式。Brotli 是建议设置,因为它具有最佳压缩比,并且 Brotli 压缩文件小于 gzip。较小的文件更适合 Web 应用程序。但是,Chrome 和 Firefox 仅在用户通过 HTTPS 访问网站时才支持 Brotli。此外,虽然大多数现代服务器都支持 Brotli,但是还有部分服务器不支持。请确保服务器支持 Brotli。
有关压缩格式的更多信息,请参阅部署 Web 应用程序。
要改为通过脚本启用此设置,请将以下代码添加到脚本之一:
PlayerSettings.WebGL.compressionFormat = WebGLCompressionFormat.Brotli;
启用数据缓存 (Data caching),以便 Unity 在用户计算机上缓存内容资源数据。数据缓存可以使应用程序运行更快。有关更多信息,请参阅 Web 中的缓存行为。
要改为通过脚本启用此设置,请将以下代码添加到脚本之一:
PlayerSettings.WebGL.dataCaching = true;
调试符号 (Debug symbols) 设置会保留调试符号并在发生错误时显示堆栈跟踪的原始函数名称,因此更容易识别错误的来源。建议的最佳做法是在最终发布构建上禁用调试符号 (Debug symbols),因为启用此设置会使构建不必要地增大并减慢应用程序的速度。在开发和测试期间启用此设置可以更容易识别错误来源。
要改为通过脚本停用此设置,请将以下代码添加到脚本之一:
PlayerSettings.WebGL.debugSymbolMode = WebGLDebugSymbolMode.Off;
启用异常 (Enable exceptions) 设置让您可以选择如何在运行时处理错误。建议的最佳做法是在最终发布构建中选择无 (None) 选项,此设置可提供最佳性能和最小构建。
但是,选择此选项时,抛出的任何异常都会导致内容停止并出现错误,因此最好在开发和测试期间启用异常。有关更多信息,请参阅 Web 播放器设置。
要改为通过脚本停用异常,请将以下代码添加到脚本之一:
PlayerSettings.WebGL.exceptionSupport = WebGLExceptionSupport.None;
WebAssembly 2023 是一组 WebAssembly 语言功能,可以提高性能并减小代码大小。因此,建议您启用此设置。
要改为通过脚本启用此设置,请将以下代码添加到脚本之一:
PlayerSettings.WebGL.wasm2023 = true;
// PlayerSettings.WebGL.webAssemblyTable = true;
// PlayerSettings.WebGL.webAssemblyBigInt = true;
要在没有 WebAssembly 2023 的情况下启用 WebAssembly.Table 或 BigInt 功能,请删除第一行代码并删除注释行。
Unity 最多支持 4096 MB 的构建内存。对于大多数应用程序,2048 MB 的内存即可。但是,对于更复杂的实时 3D 体验,尤其是桌面浏览器,最好提供更多内存。提供更多内存时,可以更动态地加载更丰富、更大的场景。
但是,对于超过 2048 MB 的构建,Firefox 和 Chrome 浏览器在版本 119 之前的版本中存在已知错误。
要改为通过脚本更改最大内存,请将以下代码添加到脚本中,并将数字更改为首选内存大小:
PlayerSettings.WebGL.maximumMemorySize = 4096;