一、Profiler窗口入门
默认情况下,性能分析器记录并保留游戏的最后 300 帧,并显示有关每一帧的详细信息。可以在 Preferences 窗口(菜单:File > Preferences)中增加其记录的帧数(至多 2,000 帧)。
1.1 性能分析器控件
Deep Profile
启用此设置可对所有 C# 方法进行性能分析。启用此设置后,Unity 会将检测功能添加到所有 Mono 调用,然后便可以对脚本进行更详细的调查。请参阅深度性能分析。
Call Stacks
要记录用于脚本内存分配的调用栈,请单击此开关。启用此选项时,性能分析器记录的帧具有 GC.Alloc 样本中的信息;即使在 Deep Profile 未激活的情况下,完整调用栈上的这些样本也会导致托管脚本分配。有关更多信息,请参阅“CPU Usage Profiler 模块”页面的分配调用栈部分。
1.2 深度性能分析
通常,性能分析器仅对用 ProfilerMarker 显式包裹的代码时序进行性能分析。
如果未向您自己的代码添加更显式的 ProfilerMarker 检测,您可以视为脚本代码的子样本的唯一其他样本是回调到 Unity API 中的样本(如果已对该 API 进行检测)。带有性能开销的大多数 API 调用都会经过检测。例如,通过 Camera.main API 访问主摄像机的操作被注册为“FindMainCamera”样本。
深度性能分析是资源密集型操作,会耗用大量内存。因此,在进行性能分析时,应用程序运行速度显著降低。深度性能分析更适合用简单脚本编写的小游戏。如果使用的是复杂脚本代码,则应用程序可能根本无法使用深度性能分析。对于许多较大的应用程序,深度性能分析可能会使 Unity 耗尽内存。
如果遇到问题,导致性能分析器的太多样本存储在环形缓冲区(用于将样本流式传输到性能分析器)中,Unity 将显示一条错误消息