Version: 6000.3
语言: 中文
Web 开发
与浏览器脚本的交互

Web 播放器设置

使用播放器设置了解 Unity 如何构建项目编译为可在特定平台或平台上运行的格式的过程。更多信息
请参阅术语表
并显示最终的 Web 应用程序。有关常规播放器设置的说明,请参阅播放器设置。

注意Facebook 即时游戏平台共享这些设置。

访问 Web玩家设置设置,用于为 Unity 构建的最终游戏设置各种特定于玩家的选项。更多信息
请参阅术语表
:

  • 在 Unity 主菜单中,转到 编辑>项目设置(Project Settings) > 播放器。将出现“播放器设置”窗口。
  • 选择 Web 选项卡以查看 Web 播放器设置。
Web 播放器设置
Web 播放器设置

您可以在以下部分中找到有关属性的文档:

注意:尽管“图标”面板显示在 Web 播放器设置中,但没有可用的图标设置,因为 Web 游戏不使用图标。

有关 Web 发布设置的详细信息,请参阅 Web 构建和运行

决议和演示

使用“分辨率和演示”部分在“分辨率”部分中自定义屏幕外观的各个方面。

Web Player 平台的分辨率部分
Web Player 平台的分辨率部分

分辨率

您可以通过编辑以下选项来自定义 Web 画布元素的屏幕模式和默认大小:

设置 功能
默认画布宽度(Default Canvas Width) 设置 Web 画布元素的宽度。
默认画布高度 设置 Web 画布元素的高度。
在后台运行 启用此选项可允许内容在画布或浏览器窗口失去焦点时继续运行。

网页模板

选择要用于 Web 项目的模板:

  • 默认页面是一个简单的白色页面,在灰色画布上有一个加载栏。
  • 最小”页面仅包含运行 Web 内容所需的样板代码。
  • PWA 页面有一个渐进式 Web 应用程序通过 Web 交付的软件应用程序。它使用某些浏览器功能来创建与本机应用程序相当的用户体验。更多信息
    请参阅术语表
    包括 Web 清单文件和 Service Worker 代码。

您可以使用自己的模板,按照 Web 模板中的说明在与已完成游戏类似的环境中运行游戏。

启动图像

使用虚拟现实初始图像设置选择自定义初始图像XR一个总称,包括虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用。支持这些形式的交互式应用程序的设备可以称为 XR 设备。更多信息
请参阅术语表
显示。有关常见初始屏幕设置的信息,请参阅初始屏幕

虚拟现实的启动画面设置。
虚拟现实的启动画面设置。

其他设置

此部分允许您自定义一系列选项,这些选项分为以下组:

渲染

使用这些设置可以自定义 Unity 为 Web 平台渲染游戏的方式。

Web 平台的渲染播放器设置
Web 平台的渲染播放器设置
设置 功能
色彩空间 选择要用于渲染的色彩空间。有关更多信息,请参阅色彩空间
  • Gamma:Gamma 色彩空间通常用于计算旧硬件上的光照,对于帧缓冲区格式,每个通道限制为 8 位。尽管今天的显示器是数字的,但它们仍然可能接受伽马编码的信号作为输入。
  • 线性:线性色彩空间渲染可提供更精确的结果。当您选择在线性色彩空间中工作时,编辑器默认使用 sRGB 采样。如果你的纹理处于线性色彩空间中,你需要在线性色彩空间中工作,并停用每个纹理的sRGB采样。
自动图形 API 启用默认的 Web 图形 API (WebGL 2.0)。默认情况下,此选项处于启用状态。
禁用此选项可显示“图形 API”列表,您可以在其中手动选取和重新排序图形 API。
图形 API 将此列表中的第一个 API 作为项目的默认 Web 图形 API 的优先级。如果浏览器不支持该 API 或存在其他问题,Unity 会尝试列表中的下一个 API(如果存在)作为后备。
单击并拖动列表中的条目以重新排序它们。有关 Web 图形 API 的详细信息,请参阅 Web 图形 API。仅当禁用自动图形 API 时,
此属性才可用。
静态批处理 启用此选项以使用静态批处理Unity 用于在屏幕上绘制游戏对象的一种技术,用于将静态(非移动)游戏对象组合成大网格,并以更快的方式呈现它们。更多信息
请参阅术语表
.
动态批处理 动态批处理 (Dynamic Batching)一种自动 Unity 过程,它尝试将多个网格体渲染为单个网格体,以优化图形性能。该技术转换 CPU 上的所有游戏对象顶点,并将许多相似的顶点组合在一起。更多信息
请参阅术语表
(默认启用)。

注意:可编写脚本的渲染管线处于活动状态时,动态批处理不起作用,因此仅当 可编写脚本的渲染管线资产图形(Scriptable Render Pipeline Asset Graphics) 设置为空时,此设置才可见。
图形作业(实验性) 启用此选项可指示 Unity 将图形任务(渲染循环)卸载到在其他 CPU 内核上运行的工作线程。这是为了减少花费在Camera.Render在主线程上,这通常是一个瓶颈。

注意:此功能是实验性的。它可能无法提高项目的性能,并且可能会引入新的崩溃。
纹理压缩格式 选择 DXTETC2ASTC 以设置 Web 平台的纹理压缩格式。有关如何选择正确格式的信息,请参阅纹理压缩格式概述。要从脚本为桌面和移动浏览器创建构建,请参阅Web中的纹理压缩
光照贴图编码 定义光照贴图的编码方案和压缩格式。
您可以选择低质量正常质量高质量
HDR立方体贴图编码 定义HDR立方体贴图的编码方案和压缩格式。
您可以选择低质量正常质量高质量。有关更多信息,请参阅光照贴图:技术信息
光照贴图流送 启用此选项可将Mipmap流送用于光照贴图。Unity 在生成所有光照贴图时将此设置应用于它们。

注意:要使用此设置,必须启用 纹理Mipmap流送质量(Texture Mipmap Streaming Quality) 设置。
流式处理优先级 设置Mipmap流送系统中所有光照贴图的优先级。Unity 在生成所有光照贴图时将此设置应用于它们。
正数具有更高的优先级。有效值范围为
-128127.
帧时序统计 启用此属性以使用 FrameTimingManager API 收集 CPU 和 GPU 帧时序数据。如果禁用此属性,动态分辨率(Dynamic Resolution)摄像机设置,允许你动态缩放单个渲染目标,以减少GPU上的工作负载。更多信息
请参阅术语表
相机设置无法使用这些数据来动态调整分辨率以减少 GPU 工作负载。
虚拟纹理(实验性) 如果您的场景具有许多高分辨率纹理,则减少GPU内存使用和纹理加载时间。有关更多信息,请参阅虚拟纹理。
注意:Unity 编辑器需要重新启动才能使此属性生效。
着色器精度模型 选择采样器的默认精度和half用于着色器。有关更多信息,请参阅 ShaderPrecisionModel
360度立体捕捉 指示 Unity 是否可以捕获立体 360 度图像和视频。启用后,Unity 会编译其他着色器变体以支持 360 度捕获(目前仅在 Windows/OSX 上)。这enable_360_capture关键字在RenderToCubemap调用,但不会在此函数之外触发。

配置

Web 平台的配置设置
Web 平台的配置设置
财产 描述
脚本后端 选择要使用的脚本后端。脚本后端决定了 Unity 如何在项目中编译和执行 C# 代码。
  • Mono:将 C# 代码编译为 .NET 公共中间语言 (CIL) ,并使用公共语言运行时执行该 CIL。有关更多信息,请参阅单声道Unity 中使用的脚本后端。更多信息
    请参阅术语表
    .
  • IL2CPP:将 C# 代码编译为 CIL,将 CIL 转换为 C++,然后将该 C++ 编译为本机机器代码,该机器代码直接在运行时执行。有关更多信息,请参阅IL2CPPUnity 开发的脚本后端,在为某些平台构建项目时,可以将其用作 Mono 的替代品。更多信息
    请参阅术语表
    .
API 兼容性级别 选择可在项目中使用的 .NET API。此设置可能会影响与第三方库的兼容性。但是,它对特定于编辑器的代码(编辑器目录中的代码,或特定于编辑器的程序集定义中的代码)没有影响。

提示:如果第三方程序集遇到问题,可以尝试 API 兼容性级别部分中的建议。


  • .NET Framework:与 .NET Framework 4 兼容(包括 .NET Standard 2.0 配置文件中的所有内容以及其他 API)。使用访问 .NET Standard 2.0 中未包含的 API 的库时,选择此选项。生成更大的版本,并且所有平台都不一定支持任何其他可用的 API。有关详细信息,请参阅引用其他类库程序集
  • .Net Standard 2.1:生成较小的版本并具有完整的跨平台支持。
编辑器程序集兼容性级别 选择要在编辑器程序集中使用的 .NET API。
  • .NET Framework:与 .NET Framework 4 兼容(包括 .NET Standard 2.1 配置文件中的所有内容以及其他 API)。使用访问 .NET Standard 2.1 中未包含的 API 的库时,请选择此选项。生成更大的版本,并且所有平台都不一定支持任何其他可用的 API。有关详细信息,请参阅引用其他类库程序集
  • .NET Standard:与 .NET Standard 2.1 兼容。生成较小的构建并具有完整的跨平台支持。
IL2CPP 代码生成 定义 Unity 如何管理 IL2CPP 代码生成。

注意:要使用它,请将 Scripting Backend 设置为 IL2CPP
C++编译器配置 选择编译 IL2CPP 生成的代码时使用的 C++ 编译器配置。
  • 调试:调试配置会关闭所有优化,这使得代码的构建速度更快,但运行速度较慢。
  • 发布:发布配置启用优化,以便编译后的代码运行得更快,二进制大小减小,但编译需要更长的时间。
  • 主:主配置支持所有可能的优化,尽可能压缩每一点性能。例如,在使用 MSVC++ 编译器的平台上,此选项启用链接时代码生成。使用此配置编译代码可能比使用 Release 配置花费的时间要长得多。建议的最佳做法是,如果构建时间的增加是可以接受的,则使用 Master 配置构建游戏的发布版本。
使用增量 GC 使用增量垃圾回收器,将垃圾回收分散到多个帧上,以减少与垃圾回收相关的帧持续时间峰值。有关详细信息,请参阅自动内存管理
允许通过 HTTP 下载 指示是否允许通过 HTTP 下载内容。默认选项为“不允许”,因为推荐的协议是 HTTPS,这更安全。
  • 不允许:从不允许通过 HTTP 下载。
  • 开发版本中允许:仅允许在开发版本中通过 HTTP 下载。
  • 始终允许:允许在开发和发布版本中通过 HTTP 下载。
主动输入处理 选择如何处理来自用户的输入。
  • 输入管理器(旧):使用原始输入设置。
  • 输入系统包(新)(Input System Package)(输入系统包)(Input System Package(新)(Input System Package)(输入系统包)(Input
  • 两者:同时使用这两个系统。

着色器变体加载(Shader Variant Loading)

使用这些设置来控制内存量着色器在 GPU 上运行的程序。更多信息
请参阅术语表
在运行时使用。

财产 描述
默认块大小 (MB) 设置 Unity 存储在所有平台的构建应用程序中的压缩着色器变体数据块的最大大小。默认值为16. 有关更多信息,请参阅着色器加载
默认块计数 设置 Unity 在所有平台上在内存中保留的解压缩块数的默认限制。默认值为0,这意味着没有限制。
覆盖 启用覆盖此构建目标的 默认块大小(Default chunk size) 和 默认块计数(Default chunk count)。
块大小 (MB) 替代此生成目标上的默认块大小 (MB) 的值。
块计数 覆盖此构建目标上的 默认区块计数(Default chunk count) 的值。

API 兼容性级别

您可以为所有目标选择单一 API 兼容性级别。有时,第三方 .NET 库使用超出 .NET 兼容性级别的功能。要了解在这种情况下发生了什么以及如何最好地解决它,请尝试遵循以下建议:

  1. 安装 ILSpy for Windows。
  2. 将遇到问题的 API 兼容性级别的 .NET 程序集拖到 ILSpy 中。您可以在以下位置找到有问题的文件Frameworks/Mono/lib/mono/YOURSUBSET/.
  3. 拖入第三方程序集。
  4. 右键单击第三方程序集,然后选择分析
  5. 在分析报告中,检查“取决于”部分。该报告突出显示了第三方程序集所依赖的任何内容,但在您选择的 .NET 兼容性级别中以红色显示。

脚本编译

Web 平台的脚本编译设置
Web 平台的脚本编译设置
财产 描述
脚本定义符号 设置自定义编译标志。

有关更多详细信息,请参阅平台相关编译
其他编译器参数 将条目添加到此列表,以将其他参数传递给 Roslyn 编译器。为每个附加参数使用一个新条目。
要创建新条目,请单击添加+)。要删除条目,请单击删除-)。
添加所有所需参数
后,单击“应用”以在将来的编译中包含其他参数。单击“恢复”将此列表重置为最近应用的状态。
禁止显示常见警告 指示是否显示 C# 警告 CS0169CS0649
允许“不安全”代码 支持在预定义程序集中编译“不安全”的 C# 代码(例如,Assembly-CSharp.dll).
对于装配定义文件 (
.asmdef),单击您的.asmdef文件,并在显示的“检查器”窗口中启用该选项。
使用确定性编译 指示是否使用 -deterministic C# 标志阻止编译。启用此设置后,编译的程序集在每次编译时都是逐字节相同的。

有关详细信息,请参阅控制代码生成的 C# 编译器选项

优化

Web 平台的优化设置
Web 平台的优化设置
财产 描述
预烘焙碰撞网格体(Prebake Collision Meshes) 在构建时将碰撞数据添加到网格体。
预加载资产 设置玩家在启动时加载的资产数组。
要添加新资产,请增加 Size 属性的值,然后在显示的新 元素(Element) 框中设置要加载的资产的引用。
剥离引擎代码 如果您希望 Unity Linker 工具删除项目不使用的 Unity Engine 功能的代码,请启用此选项。此设置仅适用于 IL2CPP 脚本后端。大多数应用不会使用所有可用的 DLL。此选项会删除应用未用于减小已生成播放器大小的 DLL。如果您的应用程序使用一个或多个类,这些类通常会在当前设置下被剥离,则当您尝试构建应用程序时,Unity 会显示一条调试消息。
管理剥离级别 选择 Unity 剥离未使用的托管 (C#) 代码的积极程度。当 Unity 构建您的应用程序时,Unity Linker 进程可以从您的项目使用的托管 DLL 中剥离未使用的代码。剥离代码可以使生成的可执行文件更小,但有时可以删除正在使用的代码。

有关这些选项和使用 IL2CPP 剥离字节码的详细信息,请参阅 ManagedStrippingLevel


  • 最小:使用此选项可剥离类库、UnityEngine、Windows 运行时程序集,并复制所有其他程序集。
  • :删除无法访问的托管代码以减少生成大小和 Mono/IL2CPP 生成时间。
  • 中:运行 UnityLinker 以将代码大小减小到超出 Low 所能达到的范围。您可能需要支持自定义link.xml文件,并且某些反射代码路径的行为可能不同。
  • :UnityLinker 将剥离尽可能多的代码。这将进一步减小代码大小,超出 Medium 所能实现的范围,但某些方法的托管代码调试可能不再有效。您可能需要支持自定义link.xml文件,并且某些反射代码路径的行为可能不同。
启用内部探查器(已弃用) 此功能已弃用,并将在未来版本的 Unity 中停用。请改用“探查器”窗口(菜单:窗口>分析>探查器)。

探查器收集应用程序性能数据并将报告打印到控制台。该报告包含每个 Unity 子系统在每一帧上执行所花费的毫秒数,平均为 30 帧。
顶点压缩(Vertex Compression) 设置每个通道的顶点压缩。这会影响项目中的所有网格体。
通常,顶点压缩用于减小内存中网格体数据的大小、减小文件大小并提高 GPU 性能。

有关如何配置顶点压缩和此设置的限制的更多信息,请参阅压缩网格体数据
优化网格数据 启用此选项可从构建中使用的网格体中剥离未使用的顶点属性。此选项可减少网格体中的数据量,这有助于减少构建大小、加载时间和运行时内存使用量。

警告:如果启用了此设置,请勿在运行时更改材质或着色器设置。

有关更多信息,请参阅 PlayerSettings.stripUnusedMeshComponents
纹理Mipmap剥离 为所有平台启用 mipmap 剥离。它在构建时从纹理中剥离未使用的 mipmap 级别。
Unity 通过将 mipmap 级别与当前平台的质量设置进行比较来确定未使用的 mipmap 级别。如果从当前平台的每个质量设置中排除了 mipmap 级别,则 Unity 会在构建时从构建中剥离这些 mipmap 级别。 如果
QualitySettings.globalTextureMipmapLimit设置为已剥离的 mipmap 级别,则 Unity 会将该值设置为最接近的尚未剥离的 mipmap 级别。

堆栈跟踪

选择 Web 平台的日志记录设置。

Web 平台的日志记录设置
Web 平台的日志记录设置

根据所需的日志记录类型,启用与每种日志类型(错误断言警告日志异常)相对应的选项,选择首选的堆栈跟踪方法。有关详细信息,请参阅堆栈跟踪日志记录

财产 描述
没有 从未记录任何日志。
仅脚本 仅在运行时记录脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
.
一直记录。

遗产

启用 Clamp BlendShapes (Deprecated) 选项以限制蒙皮网格体渲染器中的混合形状权重范围。

Web 平台的旧版设置
Web 平台的旧版设置

发布设置

使用 Publishing Settings 配置 Unity 如何构建 Web 平台应用程序。例如,您可以选择启用浏览器缓存以将其文件存储在构建中。

Web 平台的发布设置
Web 平台的发布设置
财产 描述
压缩格式 选择压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩动画压缩音频压缩构建压缩
请参阅术语表
用于发布生成文件的格式。选项包括:Gzip、Brotli 和 Disabled(无)。此选项不会影响开发版本开发版本包括调试符号并启用探查器。更多信息
请参阅术语表
.
将文件命名为哈希值 启用此选项可使用未压缩文件内容的 MD5 哈希作为构建中每个文件的文件名。
数据缓存 启用此选项可自动将内容资产数据缓存在用户的计算机上,这样就不必在后续运行时重新下载(除非内容已更改)。
缓存是使用浏览器提供的 IndexedDB API 实现的。某些浏览器可能会对此实施限制,例如要求用户允许缓存特定大小的数据。
调试符号 从可用选项中进行选择,以指定如何在构建中添加调试符号。
  • 关闭:如果不希望在生成中添加任何调试符号,请选择此选项。
  • 外部:选择此选项可将调试符号存储在单独的文件中,发生错误时可以从服务器下载该文件。建议为发布版本选择此选项。
  • 嵌入:选择此选项可将调试符号嵌入到 WASM 文件中。此选项有助于保留调试符号,并在发生错误时执行堆栈跟踪的解包(显示原始函数名称)。默认情况下,此选项支持解绑。
解压缩回退 在加载器中包含构建文件的解压缩回退代码。如果无法根据所选压缩方法配置服务器响应标头,请使用此选项。
电源偏好 设置在多GPU设备上渲染时要使用的GPU的首选项。请注意,浏览器可能会忽略此首选项。
  • 默认:让浏览器选择 GPU 配置。
  • 低性能:请求浏览器使用集成 GPU 来优先考虑节能。
  • 高性能:请求浏览器使用外部 GPU 来优先考虑渲染性能。

WebAssembly 语言功能

使用此部分可以自定义 Web 应用程序的 WebAssembly 语言功能。

财产 描述
启用例外 选择如何在运行时处理意外的代码行为(通常被视为错误)。
  • :引发的任何异常都会导致您的内容停止并出现错误。如果不需要任何异常支持,请选择此选项。它提供了最佳性能和最小的构建。
  • 仅显式抛出异常(默认):捕获从throw语句,并确保finally块被调用。此选项会使从脚本生成的 JavaScript 代码更长、更慢。只有当脚本是项目中的主要瓶颈时,这才可能是一个问题。
  • Full Without Stacktrace:捕获从throw脚本中的语句、空引用和越界数组访问。
  • Full with Stacktrace:与 Full without Stacktrace 相同,但也会捕获堆栈跟踪。Unity 通过在代码中嵌入这些异常的检查来生成这些异常,因此此选项会降低性能并增加浏览器内存使用量。仅将此选项用于调试,并始终在 64 位浏览器中进行测试。
启用本机 C/C++ 多线程 启用此选项以使用面向 WebAssembly/ 的本机 Unity C/C++ 引擎代码SharedArrayBuffer多线程(实验性)。如果启用此设置,则服务器配置需要设置跨域开启器策略 (COOP)、跨域嵌入式策略 (COEP) 和跨域资源策略 (CORP) 标头。有关如何设置这些标头的示例,请参阅服务器配置代码示例。请注意,并非所有浏览器都支持SharedArrayBuffer.

此设置不启用多线程 C# 代码,因为这需要进一步改进 WebAssembly 语言标准。建议禁用此选项,仅将其用于评估未来的 Web 功能。
启用 WebAssembly 2023 如果启用,生成的 WebAssembly 代码将以 WebAssembly 2023 为目标,这是 Unity 为一系列较新的 WebAssembly 语言功能创造的名称。这些功能包括:符号扩展作码、非捕获 fp 到 int 指令、大容量内存、JS BigInt 集成、WebAssembly.Table、原生 WebAssembly 例外和 SIMD(需要 Chrome ≥ 91(2021 年 5 月)、Firefox ≥ 89(2021 年 6 月)或 Safari ≥ 16.4(2023 年 3 月))。如果禁用,则以原始 WebAssembly MVP 为目标 功能集功能是相关包的集合,可用于在 Unity 编辑器中实现特定结果。您可以直接在 Unity 的包管理器中管理功能集。更多信息
请参阅术语表
.
使用 WebAssembly.Table 如果您希望 Web 版本以WebAssembly.Table语言功能,以加快 JS-Wasm 互作和构建时间。禁用此选项后,Web 构建将针对旧的已弃用的 Emscripten-sDYNCALLSmodel 以向后兼容旧的 Unity Web JS 插件。建议为不使用任何旧的不兼容 JavaScript 插件的新项目启用此选项,如果使用.jslib依赖旧文件的文件dynCall()机制。
注意:
WebAssembly.Table不向后兼容。定位时WebAssembly.Table,使用 Emscripten 运行时函数getWasmTableEntry(functionPtr)将函数指针转换为可调用的 JS 函数,或 Emscripten 代码模板{{{ makeDynCall('sig', 'variableName') }}}(...args);进行函数指针调用。早期的 Emscripten 运行时函数系列dynCall_sig(ptr, ...args);不再支持WebAssembly.Table.有关代码示例,请参阅 Emscripten 文档。
启用 BigInt 启用此选项以定位WebAssembly.BigIntlanguage 功能,并使用BigInt键入 WebAssembly,这会导致更快的构建时间和略小的代码大小。禁用此选项后,BigInt类型在 WebAssembly 中不可用。生成的 WebAssembly 代码依赖于 BigInt ABI 来获取包含 64 位变量的函数签名。如果您想针对不支持 Wasm BigInt 功能的旧浏览器,请禁用此选项。建议为新项目启用此选项,快速生成迭代时间,如果以向后兼容旧浏览器为目标很重要,则建议禁用它。
注意:Wasm BigInt 功能至少需要 Chrome 85(2020 年 8 月 25 日)、Firefox 78(2020 年 6 月 30 日)、Safari 14.5(2021 年 4 月 26 日)或更高版本。
初始内存大小 WASM 堆内存的初始大小,以兆字节 (MB) 为单位。默认情况下,此值设置为 32 MB。如果内存增长模式设置为无,则这也是 WASM 堆内存的最大大小。
内存增长模式 从以下选项中选择 WASM 堆内存的增长模式。推荐的选项是几何。
  • :在初始内存大小中配置了 WASM 堆内存的固定大小。
  • 线性:WASM 堆内存增加线性内存增长步骤配置的固定量。
  • 几何:WASM 堆内存相对于当前堆大小增加,具体取决于几何内存增长步骤几何内存增长上限中配置的系数。
最大内存大小 WASM 堆内存的最大大小(以 MB 为单位)。默认情况下,此设置为 2048 MB,这是建议的设置。您可以输入最大 4096 MB 的内存大小,但超过 2048 MB 的内部版本存在已知的 Firefox 和 Chrome 错误。此选项仅适用于内存增长模式(Memory Growth Mode) 线性(Linear) 或几何(Geometric)。
线性内存增长步骤 高级调整选项,用于控制 WASM 堆增长步骤(以 MB 为单位)。默认情况下,此值设置为 16 MB。16 MB 的增长步长表示每次需要增长时,堆都会增加 16 MB。仅当 内存增长模式(Memory Growth Mode) 设置为 线性(Linear) 时才可用。
几何内存增长步骤 高级调整选项,用于控制相对于当前堆大小的 WASM 堆增长因子。默认情况下,此值设置为 0.2。增长因子为 0.2 表示每次需要增加堆时,堆的大小都会增加 0.2 * currentHeapSize。仅当 内存增长模式(Memory Growth Mode) 设置为 几何(Geometric) 时才可用。
几何内存增长上限 (MB) 高级调整选项,用于控制堆增长步骤的上限(以 MB 为单位)。默认情况下,此值设置为 96 MB。96MB 的增长上限意味着堆的大小最多增加 96 MB。仅当 内存增长模式(Memory Growth Mode) 设置为 几何(Geometric) 时才可用。
启用子模块剥离兼容性 如果启用,则生成可与 Web 剥离工具包的子模块剥离功能一起使用的构建。如果禁用,则生成不打算剥离子模块的构建。最好在不使用 Web 剥离工具包时禁用此选项,否则生成的代码大小可能会受到不利影响。

显示诊断叠加设置

为了帮助优化 Web 生成和诊断潜在问题,可以通过启用此设置来查看诊断信息(当前仅限于内存使用情况)。启用后,构建上会出现一个图标,其中显示包含有关构建数据的叠加层。它适用于开发和发布版本。

  1. 要查看诊断信息,请在“播放器设置”窗口中启用“显示诊断覆盖”选项(“文件”>“构建配置文件”>“播放器设置”>“发布设置”)。

    在桌面上,诊断图标显示在 Web 画布的页脚上:

    画布页脚上的诊断按钮
    画布页脚上的诊断按钮

    在移动设备上,诊断图标显示在屏幕的右下角:

    显示诊断按钮的 Android 手机
    显示诊断按钮的 Android 手机
  2. 单击诊断图标。出现一个覆盖层,显示 JavaScript 内存,进一步细分以显示 WASM 堆内存使用情况:

诊断叠加层显示 JavaScript 内存分布和 WASM 堆内存使用情况
诊断叠加层显示 JavaScript 内存分布和 WASM 堆内存使用情况

覆盖屏幕上将显示以下诊断:

财产 功能
JS 总内存 JavaScript (JS) 堆的当前大小,包括未分配给任何 JS 对象的未使用内存(以兆字节为单位)。
  • 已用 JS 内存:JS 对象使用的内存(以兆字节为单位)。
WASM 堆内存总量 线性内存,表示使用 Emscripten 编译的 C/C++ Unity 引擎的整个堆,包括以兆字节为单位的未分配内存。
  • 已用 WASM 堆:以兆字节为单位分配的 WASM 堆空间。
页面加载到第一帧的时间 从页面加载开始到第一个应用程序帧呈现完成的总时间(以毫秒为单位)。
  • 页面加载时间:从页面加载到开始渲染第一帧所需的时间,包括下载、编译、解析和主应用程序(以毫秒为单位)。
  • 代码下载时间:生成下载代码文件所需的时间(以毫秒为单位)。
  • 资产文件 (.data) 的加载时间:生成下载 .data 文件二进制文件所需的时间,以毫秒为单位。
  • WebAssembly 启动时间:从加载 JavaScript 框架到到达 Unity 的 C++ main() 所需的时间。这接近 WASM 的编译时间,以毫秒为单位。
  • 游戏启动时间:将 Unity 的 C++ main() 执行到 main 的第一帧所需的时间,其中通常包含第一个游戏场景的加载(以毫秒为单位)。
平均 FPS(10 秒) 每秒最后 10 帧的平均值。
  • 当前每秒帧数:每秒在屏幕上渲染的帧数。
帧失速数量 与之前的帧相比,完成时间异常长的渲染帧数。

关于 JS 内存的重要说明

JS 内存信息是使用 performance.memory API 获取的,该 API 目前仅在 Chrome 或 Edge 上受支持。没有其他可用的 API 可以为 Safari 或 Firefox 返回此信息。

注意:performance.memoryiOS 设备不支持 API。

在不支持此 API 的浏览器上,将显示一条显示 N/A 的消息。

不支持 performance.memory API 的浏览器上会出现 N/A 消息
不支持 performance.memory API 的浏览器上会出现 N/A 消息

其他资源:

玩家设置WebGL

Web 开发
与浏览器脚本的交互