性能分析器模块在分析器窗口中显示来自系统的性能数据。
您可以采用以下方式之一创建自己的性能分析器模块:
自定义模块会在性能分析器窗口图表视图 (A) 中显示在代码中指定的计数器,并且这些计数器会以列表形式出现在模块详细信息面板 (B)。
您可以使用 Unity 内置的性能分析器模块编辑器来创建自己的性能分析器模块。要在性能分析器模块中收集数据,您必须至少添加一个计数器以便模块进行跟踪。您可以添加两个内置的 Unity 计数器,或使用 ProfilerCounter API 创建自己的计数器以添加到模块中。可用计数器列表在可用计数器窗格中显示。
要创建自己的模块:
重要提示:如果性能分析器窗口中没有加载任何数据,那么在加载性能分析器模块编辑器时,您创建的所有计数器都不会出现在可用计数器窗格中。要查看您的自定义计数器,您必须使用性能分析器捕获或加载一些包含您发出的计数器的数据,然后重新打开性能分析器模块编辑器。
如要通过代码创建性能分析器模块,必须创建一个新的 ProfilerModule 脚本并定义该模块的属性,包括显示的计数器、名称和图标。
要定义性能分析器模块,脚本必须执行以下操作:
定义从项目或包中的 ProfilerModule 派生的类。在以下示例中,该类称为 TankEffectsProfilerModule:
public class TankEffectsProfilerModule : ProfilerModule
将 [ProfilerModuleMetadata] 属性分配给该类,并在属性的参数中指定模块的显示名称。在以下示例中,显示名称为“Tank Effects”:
[ProfilerModuleMetadata("Tank Effects")]
实现一个没有参数的构造函数,并将图表计数器描述的列表传递给基础构造函数。在以下示例中,没有参数的构造函数为 TankEffectsProfilerModule(),图表计数器描述符列表为 k_Counters,而基础构造函数为 base:
static readonly ProfilerCounterDescriptor[] k_Counters = new ProfilerCounterDescriptor[]
{
new ProfilerCounterDescriptor(GameStatistics.TankTrailParticleCountName, GameStatistics.TanksCategory),
new ProfilerCounterDescriptor(GameStatistics.ShellExplosionParticleCountName, GameStatistics.TanksCategory),
new ProfilerCounterDescriptor(GameStatistics.TankExplosionParticleCountName, GameStatistics.TanksCategory),
};
public TankEffectsProfilerModule() : base(k_Counters) { }
定义自己的性能分析器模块时,性能分析器窗口会自动检测该模块。要在性能分析器窗口中查看性能分析器模块中的数据,请执行以下操作:
此外,还可以在应用程序处于播放模式时运行性能分析器。但是,如果在播放模式下对应用程序进行性能分析,则性能分析器所显示的数据并不能代表该应用程序在硬件设备上构建运行时的真实情况。