通常,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 如何将工作分配到非 Web 平台上的不同线程,请参阅 Unity 中的新管线性能分析器。
要提高性能,请在 Web 的播放器设置中通过展开其他设置 (Other Settings) > 堆栈追踪 (Stack Trace),将异常支持 (Exception support) 设置为无 (None)。
可以在 Web 平台中使用性能分析器,但不能通过编辑器连接到使用 Web 构建的正在运行的播放器。这是因为 WebGL API 使用 WebSocket 进行通信,所以不允许浏览器端的传入连接。
要连接到正在运行的播放器,需要启用自动连接性能分析器 (Autoconnect Profiler) 设置:
注意:Unity 无法对 Web 应用程序的绘制调用进行性能分析。
有关更多信息,请参阅将性能分析器连接到数据源。
如果启用了以下选项之一,当画布或浏览器窗口失去焦点时,内容将继续运行:
但是,某些浏览器可能会限制在后台标签页中运行的内容。如果包含该内容的标签页不可见,在大多数浏览器中,您的内容每秒才会更新一次。请注意,这将导致 Time.time 比平常采用默认设置时更慢,因为 Time.maximumDeltaTime 的默认值小于一秒。
在某些情况下,可能希望以较低的帧率运行 Web 内容,以降低 CPU 使用率。例如,在其他平台上,可以使用 Application.targetFrameRate API 来执行此操作。
如果不想限制性能,请将此 API 设置为默认值 –1。如此,浏览器便可调整帧率以便在浏览器的渲染循环中实现最平滑的动画,获得的效果可能好于 Unity 尝试执行自身的主循环时序来匹配目标帧率。
注意:出于安全原因,Unity 无法查询浏览器的帧率。因此,Unity 假定所有浏览器的显示速率为 60__ fps__见“第一人称射击游戏”和“每秒帧数”。
See in Glossary,并基于该值设置 Application.targetFrameRate。