大家好,我正尝试调查Unity赛车游戏中一个奇怪的卡顿问题,想知道是否有人遇到过类似情况。

游戏使用URP渲染管线并支持本地分屏多人模式。

有位主播试玩了我的游戏(目前还是Alpha版本),反馈了以下情况:

  • 单人模式运行流畅,而且他很享受游戏体验。
  • 2-3人分屏游玩时会出现明显卡顿。
  • 他说所有地图都会出现这种情况。
  • 切回单人模式后问题消失。
  • 他们使用的是性能较强的Windows台式机,同时用OBS进行录制。
  • 我询问了更多细节,他表示整体CPU和内存占用率较低。游戏是3D低多边形风格加赛璐珞渲染,画面负载并不特别重。

棘手的是,我无法在我自己的机器上复现这个问题。即使在配置较低的PC上,多人模式也很流畅,因此目前我几乎无法从实际出问题的机器上获得有用的性能分析数据。

我仍然在本机进行了本地性能分析。在2人分屏模式下,GPU单帧时间通常为4-5毫秒,但偶尔会出现规律的峰值,达到13-14毫秒。

有趣的是,在峰值期间,实际URP渲染阶段的耗时几乎没有变化。不透明物体、深度法线预渲染、泛光、阴影、透明物体、轮廓线、雾效等开销基本不变。

额外增加的GPU时间大多被《设置相机属性》(Setup Camera Properties)在相机渲染开始时消耗。

正常帧:
GPU ~4.8毫秒
设置相机属性 ~2.6毫秒

峰值帧:
GPU ~13.9毫秒
设置相机属性 ~10.7毫秒

在CPU性能分析中我也看到了与D3D12相关的等待(如WaitForGPU)。

因此,我目前怀疑这更可能是帧率同步、DX12、驱动程序、OBS或多相机同步方面的问题,而不仅仅是游戏渲染开销过大。

由于我无法复现用户报告的卡顿,很难确定我本地看到的峰值是否与同一个问题相关。

有谁遇到过Unity URP分屏或多个基础相机出现类似情况吗?

我计划下一步对独立开发构建版本进行性能分析,并对比D3D12和D3D11的表现。

如果有任何经验或建议,关于我应该进一步调查什么,将不胜感激!