用于调试的网格可视化脚本最佳做法

编辑时诊断

在 Unity 编辑器中,可以查看 Unity 编辑器检查器面板底部网格视觉脚本诊断面板中当前正在编辑脚本计算机的错误和潜在带宽或性能瓶颈的实时指南。

将鼠标指针悬停在 “诊断 ”面板中的错误、警告或通知上会弹出一个工具提示,其中包含详细说明:

______________

可以通过查看内容性能分析器(CPA)来在整个环境中编译相同的诊断。

  1. 在 Unity 菜单栏上,选择网格工具包>内容性能分析器。
  2. 在 CPA 中,单击“全部运行”按钮。

______________

网格模拟器中的运行时诊断

在 Unity 编辑器中测试运行环境时,请在“游戏”窗口右上角选中“Perf Stats”复选框,在环境的各个方面显示实时摘要统计信息:

______________

右下角最右侧的列提供有关视觉脚本性能的摘要信息,每个帧提供以毫秒为单位的时间:

  • VS 用户 显示执行已创建的视觉脚本流所用的时间,不包括网格产生的任何开销。
  • VS Env 显示网格可视化脚本运行时环境产生的开销。
  • VS Net 显示网格可视化脚本运行时下网格网络堆栈产生的开销,以及调度和接收共享状态的更新。

若要获取有关环境中执行的各个视觉脚本的详细信息,可以通过在游戏窗口右上角选中“脚本统计信息”复选框来启用视觉脚本执行的实时运行时统计信息:

______________

最高处理负载 ”部分列出了在最后一秒内运行时间最长的脚本流,显示为每个帧的平均时间成本。

  • 本部分中出现的脚本流数及其总时间成本应尽可能低。
  • 理想情况下,当环境处于空闲状态时,根本不应该执行任何脚本流。

“最高共享更新加载”部分列出了最近一秒内最常更新的共享场景属性和脚本变量。 负载为 100% 表示属性或变量在该秒的每个帧中更新。

  • 共享属性和脚本变量更新的数量及其在本部分中的总负载应尽可能低。
  • 理想情况下,当环境处于空闲状态时,不应更新任何共享属性或变量。
  • 如果注意到本部分中显示的任何属性或脚本变量都不希望跨客户端通过网络同步,请考虑添加 本地脚本范围 组件以使其成为本地。

可以单击中间列中的任何游戏对象名称,直接跳转到层次结构面板中的相应游戏对象

如果要仔细了解情况,可以单击脚本统计信息面板的任何其他部分,或按 Shift+X 暂时停止其更新。 若要恢复更新,请再次单击它,或再次按 Shift+X。

网格中的运行时诊断

在网格中运行环境(例如,在 Teams 事件中),可以按 Ctrl+Shift+F1 弹出 网络信息 边栏,其中显示了有关当前会话的大量技术信息。 向下滚动以查找有关环境中运行的视觉脚本的详细信息:

______________

视觉脚本部分标题正下方的最后(数字)秒、(number)帧语句显示为如下所示的计数器聚合的秒数和帧数。 在计数器重置之前聚合最多 90 秒的数据。 下表直接显示了有关共享的信息:

  • PropVar事件行分别描述共享属性、共享脚本变量和共享事件。
  • Update 列统计视觉脚本更新属性或变量的频率。
  • 发送 ”和 “字节 ”列统计通过网络发送属性、变量或事件更新的频率。 由于速率限制,此数字可能低于 更新 计数,并且可能根本不发送冗余更新。
  • RecvBytes 列计数通过其他客户端通过网络接收属性、变量或事件更新的频率。
  • 此表中的 “字节 ”列不考虑所有网络开销,并且只能有意义地用于在运行之间进行比较。 实际带宽使用可能要高得多。

大多数执行时间 ”表按执行所花费的时间列出所有可视脚本流。 标记为 [all] 的突出显示行显示所有行的累积数据,包括当前未显示的行。 单击“ 显示更多行...” 以显示更多行。

  • 计数列统计此脚本流的执行频率。
  • 平均值 ”列显示此脚本流的每个帧的平均时间成本(以毫秒为单位)。
  • 事件列将触发脚本流的事件节点命名。
  • 目标列命名执行脚本流的脚本计算机。

最常见的共享更新最频繁的共享共享发送表列出了共享属性和共享脚本变量,这些变量最常由视觉脚本更新,或者已分别通过网络调度更新。 标记为 [all] 的突出显示行显示所有行的累积数据,包括当前未显示的行。 单击“ 显示更多行...” 以显示更多行。

  • Count 列统计此共享属性或共享变量的更新频率,或分别通过网络调度了更新。
  • Name 列将共享属性或共享变量命名。
  • 目标列命名承载属性或变量的组件。

再次按 Ctrl+Shift+F1 放大网络信息面板,显示上面所示表格中目标游戏对象的整个转换路径

若要关闭面板:第三次按 Ctrl+Shift+F1。

后续步骤