性能分析器仅对显式包含在性能分析器标记中的代码时序进行性能分析。这包括从 Unity 的原生代码到脚本代码的调用(例如 MonoBehaviour.Start、MonoBehaviour.Update 或类似方法)的第一个调用栈深度。
只有回调 Unity API(且该 API 已被检测),或调用带有显式性能分析器标记的自定义代码时,这些样本才能作为脚本代码的子样本可视化。带有性能开销的大多数 API 调用都会经过检测。例如,通过 Camera.main API 访问主摄像机会被记录为一个 FindMainCamera 样本。
如果您想获取有关所有函数调用的数据,从而了解代码对应用程序性能的影响,可以使用深度性能分析 (Deep Profile) 设置。启用深度性能分析设置后,性能分析器会对脚本代码的每个部分进行性能分析,并记录所有函数调用,至少包括进入任何 Unity API 中的第一个调用栈深度。
深度性能分析 (Deep Profiling) 是资源密集型操作,占用大量内存。因此,应用程序在性能分析时运行速度会明显变慢。深度性能分析功能最适合脚本逻辑简单的小型游戏。如果使用复杂的脚本代码,应用程序可能无法使用深度性能分析,对于许多较大规模的应用程序,深度性能分析可能会导致 Unity 内存不足。
如果要从连接的应用程序收集性能数据,或者在 Unity 编辑器中收集数据,则可以启用深度性能分析。
要为构建的应用程序启用深度性能分析,请执行以下操作:
要在编辑器中收集数据时启用深度性能分析:
然后,在启动性能分析会话时,性能分析器会检测所有函数调用。