콘솔 슬레이트 디버거(Console Slate Debugger) 는 애플리케이션의 유저 인터페이스(UI)를 개발하는 과정에서 UI 개발자가 슬레이트를 디버그해야 할 때 도움이 됩니다. 콘솔 슬레이트 디버거는 FSlateDebugging의 사용 가능한 시스템에 후킹하여 내부 슬레이트 데이터를 출력합니다. 또한 UI를 중점적으로 변경하거나 변경을 시도할 때 개발자는 이러한 중점적 업데이트를 처리하는 시스템이 무엇인지 파악해야 합니다.
콘솔 슬레이트 디버거
4.26에서는 콘솔 슬레이트 디버거의 익스텐션에 다음이 포함됩니다.
비용이 높은 프레임의 원인인 위젯을 식별하는 GlobalInvalidation
주어진 프레임에 페인트한 위젯을 표시하는 페인트 옵션
시스템이 이벤트 핸들러로 위젯을 선택하는 방법을 볼 수 있도록 하는 추가 라우팅 옵션
추가 필터 및 이벤트 콘솔 명령
SlateDebugger
PIE 모드에서 프로젝트를 실행하는 동안 물결표(~) 키를 눌러 PIE 콘솔을 열고 SlateDebugger
라고 입력합니다.
일반적으로 SlateDebugger 로그는 [프로젝트 이름]/Saved/Logs
의 [프로젝트 이름].txt
로그 파일에 작성됩니다.
이벤트 명령
슬레이트 디버거에는 특정 로그의 활성화 여부나 이벤트 필터링 등 특정한 정보를 파악하는 다양한 명령이 있습니다. 더 많은 정보가 필요하다면 CaptureStack도 트리거된 이벤트의 콜 스택을 제공할 수 있습니다.
SlateDebugger.Event |
명령 설명 |
---|---|
Start |
슬레이트 콘솔 디버거를 시작하는 |
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 |
|
SetInvalidateWidgetReasonFilter |
|
ToggleLegend |
색상 범례를 표시합니다. |
ToggleLogInvalidateWidget |
콘솔의 무효화된 위젯 로그입니다. |
ToggleWidgetNameList |
무효화된 위젯의 이름을 표시합니다. |
페인트 명령
각 프레임에 페인트한 위젯을 강조하는 데 사용되는 명령입니다. 변경되지 않았더라도 페인트한 위젯을 식별하는 데 유용합니다. 변동 위젯은 프레임마다 페인트한다는 점을 참고하세요.
SlateDebugger.Paint
SlateDebugger.Paint |
명령 설명 |
---|---|
Enable |
현재 상태에 따라 페인트 위젯 디버그 툴을 시작하고 위젯이 페인트할 때 표시되거나, 페인트 위젯 디버그 툴을 중지합니다. |
Start |
페인트 위젯 디버그 툴을 시작하며, 위젯이 페인트할 때 표시됩니다. |
Stop |
페인트 위젯 디버그 툴을 중지합니다. |
LogOnce |
마지막 업데이트 동안 한 번 페인트한 위젯 로그입니다. |
LogWarningIfWidgetIsPaintedMoreThanOnce |
위젯이 동일 프레임 내에서 두 번 이상 페인트한 경우에 대한 경고 로그입니다. |
MaxNumberOfWidgetDisplayedInList |
|
ToggleWidgetNameList |
페인트한 위젯 이름을 표시합니다. |
업데이트 명령
필요한 것보다 자주 업데이트되는 위젯을 강조하는 데 사용되는 명령입니다. 위젯 업데이트는 블루프린트에서 오버라이드하거나 실행할 수 있으므로, 올바르게 설계되지 않은 위젯 코드는 퍼포먼스 저하의 원인일 때가 많습니다.
SlateDebugger.Update
SlateDebugger.Update |
명령 설명 |
---|---|
Enable |
현재 상태에 따라 업데이트 위젯 디버그 툴을 시작하고 위젯 업데이트 시 표시되거나, 업데이트 위젯 디버그 툴을 중지합니다. |
Start |
업데이트 위젯 디버그 툴을 시작하며, 위젯 업데이트 시 표시됩니다. |
Stop |
업데이트 위젯 디버그 툴을 중지합니다. |
SetInvalidationRootIdFilter |
인밸리데이션 루트에 포함되는 위젯만 표시합니다. |
SetWidgetUpdateFlagsFilter |
|
ToggleLegend |
색상 범례를 표시합니다. |
ToggleUpdateFromPaint |
업데이트 플래그는 없지만 다른 위젯으로부터 부가적인 영향을 받아 업데이트되는 위젯을 표시합니다. |
ToggleWidgetNameList |
업데이트 위젯의 이름을 표시합니다. |