在为应用程序开发用户界面(UI)时,UI开发人员有时需要调试Slate,控制台Slate调试器 可以为你提供帮助。控制台Slate调试器挂接到FSlateDebugging中的可用系统,以便打印内部Slate数据。此外,随着UI焦点更改(或尝试更改),开发人员将需要知道哪个系统正在处理这类焦点更新。

控制台Slate调试器
在4.26中,控制台Slate调试器的扩展现在包括以下内容:
- GlobalInvalidation,有助于识别负责处理高成本帧的控件。
- 绘制选项,显示在给定帧中绘制的控件。
- 附加路由选项,用于查看系统如何选择控件作为事件处理程序。
- 其他过滤器和事件控制台命令。
SlateDebugger
在PIE模式下运行项目时,按波浪号(〜)键打开PIE控制台,然后键入 SlateDebugger
。

SlateDebugger日志通常被写入到 [ProjectName]/Saved/Logs
下的 [ProjectName].txt
日志文件中。
事件命令
Slate调试器提供了许多不同的命令以精确定位特定信息,例如启用或禁用特定日志以及过滤事件。如果需要更多信息,CaptureStack还可以提供触发事件的调用堆栈。
SlateDebugger.Event | 命令说明 |
---|---|
Start | SlateDebugger.Event.Start 的别名,用于启动Slate控制台调试器。 |
Stop | SlateDebugger.Event.Stop 的别名,用于停止Slate控制台调试器。 |
SetInputFilter | 启用或禁用特定的输入过滤器。 |
SetFocusFilter | 启用或禁用特定的焦点过滤器。 |
LogWarning | 记录警告事件。 |
LogInputEvent | 记录输入事件。 |
LogFocusEvent | 记录焦点事件。 |
LogExecuteNavigationEvent | 记录执行导航事件。 |
LogCaptureStateChangeEvent | 记录光标状态更改事件。 |
LogCursorChangeEvent | 记录光标更改事件。 |
LogAttemptNavigationEvent | 记录尝试导航事件。 |
InputRoutingModeEnabled | 如果启用,则输出输入事件采用的路由。 |
EnableAllInputFilters | 启用所有输入过滤器。 |
DisableAllInputFilters | 禁用所有输入过滤器。 |
EnableAllFocusFilters | 启用所有焦点过滤器。 |
DisableAllFocusFilters | 禁用所有焦点过滤器。 |
CaptureStack | 如果启用,则在发生事件时捕获堆栈。 |
无效命令
这些命令使你可以使用Invalidate命令显示无效的界面控件。每个失效的控件将根据失效类型以不同的颜色突出显示。

SlateDebugger.Invalidate
SlateDebugger.Invalidate | 命令说明 |
---|---|
Enable | 启动无效控件(Invalidation Widget)调试工具,在控件使无效控件调试工具失效或停止时显示,取决于当前状态。 |
Start | 启动无效控件调试工具,在控件失效时显示。 |
Stop | 停止无效控件调试工具。 |
SetInvalidateRootReasonFilter | 启用无效控件原因过滤器。SetInvalidateRootReasonFinder [None][ChildOrder][Root][ScreenPosition][Any] 。 |
SetInvalidateWidgetReasonFilter | 启用无效根原因过滤器。SetInvalidateWidgetReasonFinder [None][ChildOrder][Root][ScreenPosition][Any][None][Layout][Paint][Volatility][ChildOrder][RenderTransform][Visibility][Any] 。 |
ToggleLegend | 显示颜色图例。 |
ToggleLogInvalidateWidget | 将无效控件记录到控制台。 |
ToggleWidgetNameList | 显示无效控件的名称。 |
绘制命令
此命令用于突出显示在每个帧中绘制的控件。这适用于识别已绘制的控件(即使它们未更改)。请注意,易变控件每帧都会绘制。

SlateDebugger.Paint
SlateDebugger.Paint | 命令说明 |
---|---|
Enable | 启动绘制控件调试工具,在控件绘制或停止绘制控件调试工具时显示,取决于当前状态。 |
Start | 启动绘制控件调试工具,在控件绘制时显示。 |
Stop | 停止绘制控件调试工具。 |
LogOnce | 记录上一次更新期间绘制一次的控件 |
LogWarningIfWidgetIsPaintedMoreThanOnce | 如果控件在同一帧中绘制多次,则记录警告。 |
MaxNumberOfWidgetDisplayedInList | 显示 DisplayWidgetNameList 处于激活状态时将显示的最大控件数量。 |
ToggleWidgetNameList | 显示绘制的控件名称。 |
更新命令
此命令用于突出显示更新频率超过需求的控件。由于可能在蓝图中覆盖或执行控件更新,因此,如果未正确设计控件代码,通常会导致性能降低。

SlateDebugger.Update
SlateDebugger.Update | 命令说明 |
---|---|
Enable | 启动更新控件调试工具,在控件更新或停止更新控件调试工具时显示,取决于当前状态。 |
Start | 启动更新控件调试工具,在控件更新时显示。 |
Stop | 停止更新控件调试工具。 |
SetInvalidationRootIdFilter | 仅显示属于无效根的控件。 |
SetWidgetUpdateFlagsFilter | 如果控件在同一帧中绘制多次,则记录警告。SetWidgetUpdateFlagsFilter [None][Tick][ActiveTimer][Repaint][VolatilePaint][Any] 。 |
ToggleLegend | 显示颜色图例。 |
ToggleUpdateFromPaint | 显示不具有更新标记,但仍作为另一控件的副作用而更新的控件。 |
ToggleWidgetNameList | 显示更新控件的名称。 |