包含此页的版本:
不含此页的版本:
默认情况下,“性能分析器”窗口显示有关 Unity 本机代码的信息。它使用内置的分析器标记来组织和划分它收集的性能数据。
您可以添加分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
请参阅术语表标记添加到您自己的代码中,使在这些区域花费的时间在 Profiler 窗口中可见,并使用ProfilerMarker应用程序接口.
您还可以添加Profiler 计数器使用 ProfilerCounter API 放置在代码中,以跟踪指标,例如游戏中生成的敌人数量。更多信息
请参阅术语表添加到您的代码中以收集应用程序中指标的数据,并使用自定义分析器模块来显示此数据。如果要跟踪应用程序中的性能变化,这非常有用。将探查器计数器添加到代码可以加快对性能问题的调查,因为你可以将计数器中的信息与 Unity 的内置计数器和检测数据结合使用。
要将带有元数据的计数器和标记添加到代码中,您需要使用 Unity Profiling Core 包。
重要:Unity Profiling Core 包无法在包管理器 UI 中发现,因为它是核心包。要安装包,请按名称添加它,即com.unity.profiling.core.
您可以使用ProfilerMarker应用程序接口标记资源密集型脚本代码块并使其在 Unity Profiler 中可见,或使用ProfilerMarker<TP1>应用程序接口在 Unity Profiling Core 包中,为其生成的每个样本添加额外的元数据。
这可能很有用,因为内置的 Unity Profiler 不会分析所有方法调用。另一种方法是使用深度分析,但这会导致很大的开销,从而显着减慢应用程序的执行速度并扭曲结果。用ProfilerMarker是标记代码的更有效方法。
ProfilerMarker表示命名的探查器句柄,是分析代码的最有效方法。可以在应用程序的任何 C# 代码中使用它。
当 Unity 在非开发版本中部署分析器标记时,它们没有开销,因此您可以根据需要标记任意数量的示例。
统一标记Begin和End方法ConditionalAttribute并有条件地编译它们,因此它们在非开发构建中的执行开销为零。而Auto方法在非开发版本中并没有完全编译出来,它们有条件地编译为仅返回 null,因此它们的开销可以忽略不计。这探查器标记放置在代码中,用于描述 CPU 或 GPU 事件,然后显示在 Unity 探查器窗口中。默认添加到 Unity 代码中,或者您可以使用 ProfilerMarker API 添加自己的自定义标记。更多信息
请参阅术语表的字段存在于发布版本中,占用的内存相当于其IntPtr,即 8 个字节。
这ProfilerRecorderAPI 还使用分析器标记来捕获性能数据。在 Unity 编辑器和开发播放器中进行开发期间,您可以使用 API 来获取代码不同部分的性能概览并识别性能问题。
要在 Unity 分析器中显示自定义指标,请使用ProfilerCounterUnity Profiling Core 包中的 API。性能分析器可以显示来自ProfilerCounter或ProfilerCounterValue.
Unity 根据计数器分析的工作类型(例如渲染、脚本或动画)将 Profiler 计数器分组为类别。您可以将自定义 Profiler 计数器分配给任何 Unity 的分析类别。有关可用的完整列表探查器类别标识 Unity 子系统的工作负载数据(例如,渲染、脚本和动画类别)。Unity 对类别应用颜色编码,以直观地区分 Profiler 窗口中的数据类型。
请参阅术语表指ProfilerCategory.
您可以使用ProfilerCounter或ProfilerCounterValueAPI 来跟踪应用程序的指标,并使其在 Unity Profiler 或其他代码中可见。如果您是Asset Store 由 Unity 和社区成员创建的不断增长的免费和商业资产库。提供各种各样的资产,从纹理、模型和动画到整个项目示例、教程和编辑器扩展。更多信息
请参阅术语表包开发人员,您可以将 Profiler 计数器添加到您的代码中,以帮助其他开发人员了解系统的重要性能特征,他们可以使用此信息进行优化或预算工具。
下图显示了探查器计数器数据流的高级概述:
这ProfilerRecorderAPI 检索应用程序代码中的 Profiler 计数器数据,并且RawFrameDataView或HierarchyFrameDataViewAPI 在编辑器代码中获取 Profiler 计数器数据。你可以通过在模块编辑器中配置自定义分析器模块,在“探查器”窗口中可视化此计数器数据。
ProfilerCounter和ProfilerCounterValue支持以下类型: