版本:Unity 6 (6000.0)
语言:English
启用 WebAssembly 2023
调试和排查 Web 构建问题

Web 性能注意事项

通常情况下,Web 性能接近 GPU 上的原生应用,因为WebGL一个渲染 Web 浏览器中 2D 和 3D 图形的 JavaScript API。Unity 的 Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。 更多信息
参见 术语表
图形 API 使用您的 GPU 进行硬件加速渲染。唯一的例外是将 WebGL API 调用和着色器在 GPU 上运行的程序。 更多信息
参见 术语表
转换为您的操作系统图形 API(通常 Windows 上为 DirectX,Mac 和 Linux 上为 OpenGL)时产生的少量开销。

在 CPU 上,Emscripten 将您的代码转换为 WebAssembly,其性能取决于您使用的 Web 浏览器。

请注意以下事项

  • Unity 为 C/C++ 代码提供多线程功能,但由于 WebAssembly 的限制,尚未为 C# 代码提供多线程功能。
  • 当使用 WebGL API 进行渲染时,CPU 端 WebGL 操作的调度速度比原生 OpenGL 慢。因此,为了获得最佳性能,建议的做法是避免每帧进行大量绘制调用,因此请确保在着色器中使用了实例化和批处理技术。
  • Web 上的 SIMD 作为 WebAssembly 2023 功能集功能集是您可以用来在 Unity 编辑器中实现特定结果的相关软件包的集合。您可以在 Unity 的软件包管理器中直接管理功能集。 更多信息
    参见 术语表
    的一部分得到支持。确保启用 WebAssembly 2023 以在较新的浏览器上获得最佳性能。

提示:要了解 Unity 如何将工作分配到非 Web 平台上的不同线程,请参阅 Unity 中新的时间轴探查器一个帮助您优化游戏的窗口。它显示在游戏的各个区域花费了多少时间。例如,它可以报告渲染、动画或游戏逻辑中花费的时间百分比。 更多信息
参见 术语表

影响性能的 Web 特定设置

为了提高性能,请在 Web 的播放器设置中将异常支持设置为,方法是展开其他设置 > 堆栈跟踪

使用探查器收集性能数据

您可以在 Web 平台上使用探查器,但您无法通过编辑器附加到使用 Web 构建的正在运行的播放器。这是因为 WebGL API 使用 WebSockets 进行通信,而 WebSockets 不允许在浏览器端进行传入连接。

要附加到正在运行的播放器,您需要启用自动连接探查器设置

  1. 打开构建配置文件窗口(菜单:文件 > 构建配置文件)。
  2. 选择 Web 平台。
  3. 启用开发构建开发构建包含调试符号并启用探查器。 更多信息
    参见 术语表
    设置。
  4. 启用自动连接探查器设置。

注意:Unity 无法为 Web 应用程序分析绘制调用。

有关更多信息,请参阅将探查器连接到数据源

后台选项卡中的 Web 内容

如果启用了以下选项之一,则当画布或浏览器窗口失去焦点时,您的内容将继续运行

但是,某些浏览器可能会限制在后台选项卡中运行的内容。如果包含您内容的选项卡不可见,则大多数浏览器中您的内容每秒仅更新一次。请注意,这会导致Time.time以比平时慢的速度进行,因为Time.maximumDeltaTime的默认值小于一秒。

限制 Web 性能

在某些情况下,您可能希望以较低的帧速率运行 Web 内容以减少 CPU 使用率。例如,在其他平台上,您可以使用Application.targetFrameRate API 来实现此目的。

当您不想限制性能时,请将此 API 设置为默认值 -1。这允许浏览器为浏览器渲染循环中的最流畅动画调整帧速率,并且可能比 Unity 尝试执行自己的主循环计时以匹配目标帧速率产生更好的结果。

注意:出于安全原因,Unity 无法查询浏览器的帧速率。因此,Unity 假设所有浏览器的显示速率为 60 fps参见第一人称射击游戏,每秒帧数。
参见 术语表
,并基于该值设置Application.targetFrameRate

启用 WebAssembly 2023
调试和排查 Web 构建问题