アプリケーションのユーザー インターフェース (UI) の開発時に、スレートをデバッグする必要が生じる場合があります。このようなときに UI デベロッパーを支援するのが コンソール スレート デバッガ です。コンソール スレート デバッガでは、FSlateDebugging で利用可能なシステムに接続し、内部のスレート データをプリントします。さらに、デベロッパーは、UI フォーカスの変更 (またはその試行) に伴って、フォーカスの更新をどのシステムが処理しているかを知る必要があります。
コンソール スレート デバッガ
4.26 では、コンソール スレート デバッガの拡張機能に次のものが含まれています。
- 高負荷なフレームの原因となっているウィジェットを特定する際に役立つ GlobalInvalidation。
- 特定のフレームにペイントされたウィジェットを表示するペイント オプション。
- システムでどのようにウィジェットがイベント ハンドラとして選択されたかを示す、追加のルーティング オプション。
- 追加のフィルタとイベント コンソール コマンド。
SlateDebugger
プロジェクトを PIE モードで実行しているときに、チルダ (~) キーを押して PIE コンソールを開き、「SlateDebugger」と入力します。

通常、SlateDebugger のログ内容は、「[ProjectName]/Saved/Logs」にある「[ProjectName].txt」ログ ファイルに記録されます。
Event (イベント) コマンド
スレート デバッガには、特定のログの有効化/無効化やイベントのフィルタリングなど、特定の情報を見つけるためのさまざまなコマンドが用意されています。さらに詳細が必要な場合は、CaptureStack を使って、トリガーされたイベントのコール スタックを取得することもできます。
| SlateDebugger.Event | コマンドの説明 |
|---|---|
| Start | スレート コンソール デバッガを起動する SlateDebugger.Event.Start のエイリアスです。 |
| Stop | スレート コンソール デバッガを停止する SlateDebugger.Event.Stop のエイリアスです。 |
| SetInputFilter | 特定の入力フィルタを有効または無効にします。 |
| SetFocusFilter | 特定のフォーカス フィルタを有効または無効にします。 |
| LogWarning | 警告イベントを記録します。 |
| LogInputEvent | 入力イベントを記録します。 |
| LogFocusEvent | フォーカス イベントを記録します。 |
| LogExecuteNavigationEvent | ナビゲーション実行イベントを記録します。 |
| LogCaptureStateChangeEvent | カーソル状態の変更イベントを記録します。 |
| LogCursorChangeEvent | カーソルの変更イベントを記録します。 |
| LogAttemptNavigationEvent | ナビゲーション試行イベントを記録します。 |
| InputRoutingModeEnabled | 有効な場合、入力イベントが辿った経路を出力します。 |
| EnableAllInputFilters | すべての入力フィルタを有効にします。 |
| DisableAllInputFilters | すべての入力フィルタを無効にします。 |
| EnableAllFocusFilters | すべてのフォーカス フィルタを有効にします。 |
| DisableAllFocusFilters | すべてのフォーカス フィルタを無効にします。 |
| CaptureStack | 有効な場合、イベントが存在するときにスタックをキャプチャします。 |
Invalidate (無効化) コマンド
これらのコマンドでは、Invalidate コマンドを使って画面上の無効化されたウィジェットを示すことができます。無効化されたウィジェットは、無効のタイプに応じて、それぞれ別の色でハイライトされます。
SlateDebugger.Invalidate
| SlateDebugger.Invalidate | コマンドの説明 |
|---|---|
| Enable | 現在のステータスに応じて、ウィジェットが無効化された際に Invalidation Widget デバッグ ツールを起動して表示するか、Invalidation Widget デバッグ ツールを停止します。 |
| Start | ウィジェットが無効化された際に Invalidation Widget デバッグ ツールを起動して表示します。 |
| Stop | Invalidation Widget デバッグ ツールを停止します。 |
| SetInvalidateRootReasonFilter | Invalidate Widget Reason フィルタを有効にします。SetInvalidateRootReasonFinder [None][ChildOrder][Root][ScreenPosition][Any]. |
| SetInvalidateWidgetReasonFilter | Invalidate Root Reason フィルタを有効にします。SetInvalidateWidgetReasonFinder [None][ChildOrder][Root][ScreenPosition][Any][None][Layout][Paint][Volatility][ChildOrder][RenderTransform][Visibility][Any]. |
| ToggleLegend | 色の凡例を表示します。 |
| ToggleLogInvalidateWidget | 無効化されたウィジェットをコンソールに記録します。 |
| ToggleWidgetNameList | 無効化されたウィジェットの名前を表示します。 |
Paint (ペイント) コマンド
このコマンドでは、各フレームにペイントされるウィジェットをハイライトします。変更がないにもかかわらずペイントされるウィジェットを特定する際に便利です。Volatile ウィジェットは各フレームにペイントされる点に注意してください。
SlateDebugger.Paint
| SlateDebugger.Paint | コマンドの説明 |
|---|---|
| Enable | 現在のステータスに応じて、ウィジェットのペイント時に Paint Widget デバッグ ツールを起動して表示するか、Paint Widget デバッグ ツールを停止します。 |
| Start | ウィジェットのペイント時に Paint Widget デバッグ ツールを起動して表示します。 |
| Stop | Paint Widget デバッグ ツールを停止します。 |
| LogOnce | 最終更新時に一度だけペイントするウィジェットを記録します。 |
| LogWarningIfWidgetIsPaintedMoreThanOnce | ウィジェットが同フレーム内で複数回ペイントする場合に、警告を記録します。 |
| MaxNumberOfWidgetDisplayedInList | DisplayWidgetNameList が有効な場合に、表示するウィジェットの最大数を表示します。 |
| ToggleWidgetNameList | ペイントされたウィジェットの名前を表示します。 |
Update (更新) コマンド
このコマンドでは、必要以上に頻繁に更新されているウィジェットをハイライトします。Widget Update はブループリント内でオバーライドまたは実行可能であるため、ウィジェットのコードが正しく作成されていない場合に、低パフォーマンスの原因となることがよくあります。
SlateDebugger.Update
| SlateDebugger.Update | コマンドの説明 |
|---|---|
| Enable | 現在のステータスに応じて、ウィジェットの更新時に Update Widget デバッグ ツールを起動して表示するか、Update Widget デバッグ ツールを停止します。 |
| Start | ウィジェットの更新時に Update Widget デバッグ ツールを起動して表示します。 |
| Stop | Update Widget デバッグ ツールを停止します。 |
| SetInvalidationRootIdFilter | 無効化されたルートの一部であるウィジェットのみを表示します。 |
| SetWidgetUpdateFlagsFilter | ウィジェットが同フレーム内で複数回ペイントする場合に、警告を記録します。SetWidgetUpdateFlagsFilter [None][Tick][ActiveTimer][Repaint][VolatilePaint][Any]. |
| ToggleLegend | 色の凡例を表示します。 |
| ToggleUpdateFromPaint | 更新フラグがなくても、他のウィジェットと連動して更新されるウィジェットを表示します。 |
| ToggleWidgetNameList | Update Widget の名前を表示します。 |