콘솔 슬레이트 디버거(Console Slate Debugger) 는 애플리케이션의 유저 인터페이스(UI)를 개발하는 과정에서 UI 개발자가 슬레이트를 디버그해야 할 때 도움이 됩니다. 콘솔 슬레이트 디버거는 FSlateDebugging의 사용 가능한 시스템에 후킹하여 내부 슬레이트 데이터를 출력합니다. 또한 UI를 중점적으로 변경하거나 변경을 시도할 때 개발자는 이러한 중점적 업데이트를 처리하는 시스템이 무엇인지 파악해야 합니다.
콘솔 슬레이트 디버거
콘솔 슬레이트 디버거의 익스텐션에 다음이 포함됩니다.
- 비용이 높은 프레임의 원인인 위젯을 식별하는 GlobalInvalidation
- 주어진 프레임에 페인트한 위젯을 표시하는 페인트 옵션
- 시스템이 이벤트 핸들러로 위젯을 선택하는 방법을 볼 수 있도록 하는 추가 라우팅 옵션
- 추가 필터 및 이벤트 콘솔 명령
이 페이지의 스크린샷은 라이라(Lyra) 샘플 게임 프로젝트에서 가져온 것입니다. 라이라에서 SlateDebugger 명령을 테스트하려면 Slate.EnableGlobalInvalidation 1 명령을 사용하여 기본적으로 활성화되지 않은 글로벌 인밸리데이션을 활성화합니다.
SlateDebugger
PIE 모드에서 프로젝트를 실행하는 동안 물결표(~) 키를 눌러 PIE 콘솔을 열고 SlateDebugger 라고 입력합니다.

일반적으로 SlateDebugger 로그는 [프로젝트 이름]/Saved/Logs 의 [프로젝트 이름].txt 로그 파일에 작성됩니다.
이벤트 명령
슬레이트 디버거에는 특정 로그의 활성화 여부나 이벤트 필터링 등 특정한 정보를 파악하는 다양한 명령이 있습니다. 더 많은 정보가 필요하다면 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 | I활성화하면 이벤트 발생 시 스택을 캡처합니다. |
무효화 명령
무효화 명령을 사용하여 무효화된 화면 내 위젯을 표시하도록 해 주는 명령입니다. 각각의 무효화된 위젯은 무효화 타입에 따라 서로 다른 색으로 강조됩니다.
SlateDebugger.Invalidate에는 인벨리데이션 프로세스 도중 각 위젯의 상태가 표시됩니다.
| SlateDebugger.Invalidate | 명령 설명 |
|---|---|
| Enable | 현재 상태에 따라 인밸리데이션 위젯 디버그 툴을 시작하고 위젯이 무효화를 수행할 때 표시되거나, 인밸리데이션 위젯 디버그 툴을 중지합니다. |
| 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 | 업데이트 위젯의 이름을 표시합니다. |