본문으로 바로가기

[Unreal Editor] 4. Custom Tab

category UnrealEngine/Editor 2024. 1. 16. 15:53

 

이번에 우리는 언리얼 엔진 에디터를 커스터마이징해  새로운 탭을 만들고, 탭을 누르면 어떠한 창이 나타나게 하여 우리가 추가해놓은 Slate 탭이 나타나게 할 것입니다.

 

이를 위해선 Slate에 대해 알아야합니다.

Slate는 이 곳에 설명해 두었습니다. (추후 추가 예정 )

 

우리는 언리얼 엔진 에디터를 커스터마이징 해야 하기 때문에, 엔진이 시작과 동시에 기능이 붙어야 한다는 것을 알아둬야 합니다.

엔진이 시작됨과 동시에, 즉 StartupModule이 호출될 때 에디터에 추가 작업을 요청합니다.

 

이는 FGlobalTabmanager를 통해서 요청합니다.

 

FOnSpawnTab 객체를 확인해보면, Delegate임을 알 수 있습니다. 이에 맞춰서 함수를 하나 만들어 바인딩 해주어야 합니다.

 

 

이제 탭 생성이 끝났으니, 탭이 눌러졌을 때 어떠한 창이 떠야 하는지를 알려주어야 합니다.

다음과 같이 작성합니다.

 

 

여기서 알아두어야 할 것은 SNew 매크로와 ETabRole입니다.

 

SNew는 괄호안에 들어가는 새로운 Slate 객체를 만들겠다는 뜻입니다.

Slate 객체는 SNew 또는 SAssignNew를 통해서만 만들어져야 합니다.

 

ETabRole은 다음과 같습니다.

  • MajorTab : 탭의 최상위 레벨이며 모드 패널이나 월드 아웃라이너 같은 에디터UI의 최상위 섹션입니다. MatorTab에는 여러 개의 PanelTab이 포함될 수 있습니다.
  • PanelTab : 디테일 패널이나 콘텐츠 브라우저 같은 콘텐츠 패널이 포함된 탭입니다. PanelTab은 MajorTab, PanelTab, NomadTab이 포함될 수 있습니다.
  • NomadTab : MajorTab / PanelTab 에 맞지 않는 콘텐츠를 보관하는데 사용하는 독립적인 탭입니다. 에셋이나 다른 유형의 콘텐츠에 대한 에디터를 보유하는데 사용할 수 있습니다.
  • DocumentTab : Material이나 Blueprint같은 특정 에셋이나 리소스에 대한 문서를 표시하는데 사용되는 PanelTab 유형입니다. 일반적으로 에셋 / 리소스 당 단일 인스턴스를 가지며 에디터 UI에서 붙이거나 (도킹하거나) 뗄 수 있습니다.

 

이제 다 끝났고, 실제로 버튼이 눌렸을 때 탭이 나타나게 하면 됩니다.

 

 

이를 통해 우리가 만든 새로운 NomadTab이 생성되게 됩니다.