Unreal Insights:捕捉与阅读
Unreal Insights 是 UE5 时代主推的帧级分析工具。它把"运行时发生的一切"录成 Trace,事后慢慢看。
开启 Trace 的方法
| 方法 | 适用 |
|---|---|
编辑器启动参数 -trace=frame,cpu,loadtime,... |
开发期固定开启 |
控制台 trace.start default / trace.stop |
临时录制 |
-trace=... + trace.file 写文件 |
离线保存 |
| 直接用 UnrealInsights 程序连接 | 实时观看 |
常用 Channel:frame(帧事件)、cpu(CPU 任务)、loadtime(加载)、memory(内存)、bookmark(自定义书签)。
Timing Insights 的读法
打开 Trace 文件后:
- Frames 视图:每帧的时长,先找尖峰帧(红色高柱);
- Time 图区:该帧的时间轴,每个 Event 是一条横向条——长度 = 耗时,位置 = 时刻;
- Tracks:左侧的线程/类别轨道(Game / Render / 各 Worker 线程),可以看到并行与依赖;
- Callees/Callers:选中一个 Event,向下钻取它的组成。
核心动作:钻取(Drill Down)。选中游戏线程的长条 → 展开 → 找到最长的子任务 → 继续展开,直到定位到具体函数 / 事件。
从 Trace 到行动的例子
Trace 显示某帧 30ms → 钻取发现 15ms 在 "Component Initialize" → 再钻取发现一个蓝图组件的 BeginPlay 里做了 3000 次射线检测 → 原因是新关卡一口气 Spawn 了 100 个敌人。
没有 Insights,这个故事里的每一层都靠猜;有了 Insights,定位到具体函数只需 5 分钟。
自定义 Trace 事件
C++ / 蓝图里可以插入自定义事件(如 TRACE_BOOKMARK、FTraceBookmark),让 Trace 里出现"业务名字"("BOSS 战开始"),而不是一堆引擎内部名字。调试用 Trace 友好度倍增。
