自定义 Profiler帮助您优化游戏的窗口。它显示了在游戏的各个区域花费了多少时间。例如,它可以报告渲染、动画或游戏逻辑所花费的时间百分比。 更多信息
参见 词汇表 模块在 Profiler 窗口中显示来自您系统的性能数据。
您可以通过以下方式之一创建自定义 Profiler 模块
某些软件包包含您可以安装特定软件包时使用的自定义 Profiler 模块。有关更多信息,请参阅 Profiler 模块列表。
自定义模块在 Profiler 窗口图表视图 (A) 中显示您在代码中指定的计数器,并且计数器作为列表显示在模块详细信息面板 (B) 中。
您可以使用 Unity 的内置 Profiler 模块编辑器来创建自定义 Profiler 模块。有关更多信息,请参阅 Profiler 模块编辑器文档部分 创建自定义模块。
要通过代码创建自定义 Profiler 模块,您必须创建一个新的 ProfilerModule 脚本并定义模块的属性,包括它显示的计数器、它的名称和它的图标。
要定义自定义 Profiler 模块,您的脚本必须执行以下操作
在您的项目或软件包中定义从 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) { }
当您定义自定义 Profiler 模块时,Profiler 窗口会自动检测到它。要在 Profiler 窗口中查看自定义 Profiler 模块中的数据
您也可以在应用程序处于播放模式时运行 Profiler。但是,如果您在播放模式下分析应用程序,则 Profiler 会显示与您在硬件设备上构建应用程序时运行应用程序的方式不一致的数据。