Version: Unity 6.0 (6000.0)
语言 : 中文
启用 WebAssembly 2023
Web 构建的调试和故障排除

Web 性能注意事项

通常,Web 性能应该接近于 GPU 上的原生应用程序,这是因为__ WebGL__一款 JavaScript API,可在 Web 浏览器中渲染 2D 和 3D 图形。Unity WebGL 构建选项让 Unity 能够将内容发布为 JavaScript 程序,而这些程序会使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。更多信息
See in Glossary
图形 API 使用 GPU 进行硬件加速渲染。唯一的例外是将 WebGL API 调用和着色器转换为操作系统图形 API(通常是 Windows 上的 DirectX,或者是 Mac 或 Linux 上的 OpenGL)会有轻微开销。

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

请注意以下事项:

  • Unity 为 C/C++ 代码提供了多线程,但由于 WebAssembly 的限制,尚未为 C# 代码提供多线程。
  • 使用 WebGL API 进行渲染时,WebGL 操作的 CPU 端分发速度比原生 OpenGL 中更慢。因此,为了获得最佳性能,建议的最佳做法是避免每帧进行大量绘制调用,因此请确保在着色器中使用实例化和批处理技术。
  • WebAssembly 2023 功能集支持 Web 上的 SIMD。确保在较新的浏览器上启用 WebAssembly 2023 以获得最佳性能。

提示:若要了解 Unity 如何将工作分配到非 Web 平台上的不同线程,请参阅 Unity 中的新管线性能分析器

影响性能的 Web 特有设置

要提高性能,请在 Web 的播放器设置中通过展开其他设置 (Other Settings) > 堆栈追踪 (Stack Trace),将异常支持 (Exception support) 设置为无 (None)

使用性能分析器收集性能数据

可以在 Web 平台中使用性能分析器,但不能通过编辑器连接到使用 Web 构建的正在运行的播放器。这是因为 WebGL API 使用 WebSocket 进行通信,所以不允许浏览器端的传入连接。

要连接到正在运行的播放器,需要启用自动连接性能分析器 (Autoconnect Profiler) 设置:

  1. 打开构建配置文件 (Build Profiles) 窗口(菜单:文件 (File) > 构建配置文件 (Build profiles))。
  2. 选择 Web 平台。
  3. 启用开发构建 (Development Build) 设置。
  4. 启用自动连接性能分析器 (Autoconnect Profiler) 设置。

注意:Unity 无法对 Web 应用程序的绘制调用进行性能分析。

有关更多信息,请参阅将性能分析器连接到数据源

后台标签中的 Web 内容

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

但是,某些浏览器可能会限制在后台标签页中运行的内容。如果包含该内容的标签页不可见,在大多数浏览器中,您的内容每秒才会更新一次。请注意,这将导致 Time.time 比平常采用默认设置时更慢,因为 Time.maximumDeltaTime 的默认值小于一秒。

限制 Web 性能

在某些情况下,可能希望以较低的帧率运行 Web 内容,以降低 CPU 使用率。例如,在其他平台上,可以使用 Application.targetFrameRate API 来执行此操作。

如果不想限制性能,请将此 API 设置为默认值 –1。如此,浏览器便可调整帧率以便在浏览器的渲染循环中实现最平滑的动画,获得的效果可能好于 Unity 尝试执行自身的主循环时序来匹配目标帧率。

注意:出于安全原因,Unity 无法查询浏览器的帧率。因此,Unity 假定所有浏览器的显示速率为 60__ fps__见“第一人称射击游戏”和“每秒帧数”。
See in Glossary
,并基于该值设置 Application.targetFrameRate

启用 WebAssembly 2023
Web 构建的调试和故障排除