언리얼 엔진/언리얼 엔진 커스텀 에디터

커스텀 에디터 아이콘 - 최종) 아이콘의 사용

monstro 2026. 2. 26. 16:25
728x90
반응형

- 개요

메뉴 엔트리에 새롭게 추가한 기능을 표시하는 아이콘을 사용한다

아이콘을 사용하는 방법은 다음과 같이 구성되어 있다

  • 1) 아이콘의 원본 이미지를 Resources 폴더에 저장
  • 2) 아이콘을 StartupModules 함수에서 등록
  • 3) 등록한 아이콘을 커스텀 MenuEntry에 배치

 

아이콘을 사용하기 위해서는 SlateStyleSet 슬레이트 위젯을 사용해야 한다

RegisterSlateStyle 함수를 호출하여 SlateStyleSet 위젯을 등록하고 내부의 아이콘을 사용한다

등록하기 이전에 SlateStyleSet 위젯을 설정하는 과정은 다음과 같다

  • 1) StyleSet의 이름을 설정
  • 2) 커스텀된 StyleSet 생성
  • 3) 디렉토리로부터 아이콘 로딩
  • 4) 아이콘의 이름 설정
  • 5) 아이콘의 크기 설정

 

- C++ 사이드

1) CoreManager.build.cs 파일

 

Projects 모듈을 추가하여 특정 플러그인(CoreManager)의 경로를 탐색할 수 있도록 설정한다

 

2) CoreManager 모듈 - CoreManagerStyle 클래스

 

SlateStyleSet을 생성하기 위한 CoreManagerStyle 클래스를 위와 같이 생성한다

4개의 멤버함수와 2개의 멤버변수로 구성되어 있다

각각 다음과 같다

  • InitializeIcons 함수 : RegisterSlateStyle 함수를 호출하여 SlateStyleSet을 등록하는 함수
  • ShutDown 함수 : CoreManager 모듈이 종료될 때 생성된 SlateStyleSet을 등록해제하는 함수
  • CreateSlateStyleSet 함수 : SlateStyleSet를 참조하고 있는 레퍼런스를 생성하는 함수
  • GetStyleSetName 함수 : SlateStyleSet의 이름인 StyleSetName 멤버변수를 반환하는 함수
  • CreatedSlateStyleSet 멤버변수 : SlateStyleSet을 참조하는 포인터
  • StyleSetName 멤버변수 : SlateStyleSet의 이름

 

 

cpp 파일에서 2개의 static 멤버변수를 초기화한다

 

 

InitializeIcons 함수의 로직은 위와 같다

CreatedSlateStyleSet 멤버변수가 유효하지 않다면 CreateSlateStyleSet 함수를 호출하여 값을 설정하고

RegisterSlateStyle 함수에 인자로 넘겨주어 SlateStyleSet을 등록한다

 

 

CreateSlateStyleSet 함수의 로직은 위와 같다

  • 생성할 SlateStyleSet의 이름을 설정 + 생성
  • 아이콘 이미지를 로딩할 디렉토리 경로 설정
  • StyleSet에 포함될 아이콘을 설정 - 아이콘의 이미지 크기와 경로를 설정
  • 설정된 SlateStyleSet 반환

 

 

ShutDown 함수의 로직은 위와 같다

CreatedSlateStyleSet 멤버변수가 유효하다면 UnRegisterSlateStyle 함수를 호출하고

인자로 넘겨주어 SlateStyleSet을 등록해제하고 멤버변수를 초기화한다

 

3) CoreManager 모듈 - CoreManager 클래스

 

StartupModule 함수와 ShutdownModule 함수에 각각 로직을 추가하여

CoreManager 모듈이 등록 + 등록해제되면 SlateStyleSet도 등록 + 등록해제한다

 

 

AddContentBrowserMenuEntry 함수에 위와 같이 로직을 추가한다

3개의 MenuEntry에 등록한 StyleSet을 사용하여 아이콘을 설정한다

 

 

RegisterAdvanceDeletionTab 함수에 위와 같이 로직을 추가한다

MenuEntry를 눌러서 팝업된 EditorTab에도 등록한 StyleSet을 사용하여 아이콘을 설정한다

 

- 최종 수행 결과

MenuEntry

 

EditorTab

728x90
반응형