티스토리 뷰
커스텀 에디터에 커스텀 아이콘을 넣는 작업을 했다.
다음의 과정이 필요하다.
- 리소스 폴더에 아이콘을 넣는다.
- 아이콘을 등록하고 모듈을 시작.
- 아이콘을 사용자 메뉴에 적용.
먼저 아무것도 상속받지 않는 클래스를 제작한다.
클래스의 내부는 static으로 이루어진 함수와 변수들로 static에 대한 이해도 높일 수 있다.
#include "Styling/SlateStyle.h"
class FSuperManagerStyle
{
public:
static void InitializeIcons();
static void ShutDown();
private:
static FName StyleSetName;
static TSharedRef<FSlateStyleSet> CreateSlateStyleSet();
static TSharedPtr<FSlateStyleSet> CreatedSlateStyleSet;
public:
static FName GetStyleSetName() { return StyleSetName; }
};
정적 함수 내의 변수는 정적 변수여야 하므로 클래스 정적 변수들로 구성되어 있는것을 볼 수 있다.
디렉토리에서 아이콘을 로드하려면
#include "Interfaces/IPluginManager.h”을 참조해야한다.
IPluginManager을 사용하려면 모듈도 추가해주어야 한다.
Projects 라는 모듈을 추가해주면 된다.
내가 추가할 아이콘은
이 3개의 아이콘. ㅋㅋㅋㅋㅋ 전~혀 상관없는 아이콘이지만 귀여워서 사용하기로 했따.
아이콘을 사용하려면 사용자가 정의한 FSlateStyleSet 을 사용해야 한다.
TSharedRef<FSlateStyleSet> CustomStyleSet = MakeShareable(new FSlateStyleSet(StyleSetName));
const FString IconDirectory =
IPluginManager::Get().FindPlugin(TEXT("SuperManager"))->GetBaseDir()/"Resources";
CustomStyleSet->SetContentRoot(IconDirectory);
const FVector2D Icon16x16(16.f, 16.f);
CustomStyleSet->Set(
"ConteneBrowser.DeleteUnusedAssets",
new FSlateImageBrush(IconDirectory / "banana.png", Icon16x16) );
위와 같은 함수를 만들고 (전부 정적 함수.) 그 내에서 사용자 정의 아이콘들을 만들어주면 된다.
아이콘을 여러개 사용하고 싶을 때는 그냥 CustomStyleSet 을 추가해주면 됨.
사용은 다음과 같이 한다.
MenuBuilder.AddMenuEntry(
FText::FromString(TEXT("Delete Unused Assets")), // Title text for menu entry
FText::FromString(TEXT("Safty delete all unused assets under folder")), // Tool tip text
FSlateIcon(FSuperManagerStyle::GetStyleSetName(), "ConteneBrowser.DeleteUnusedAssets"), // Custom icon
// The actual funcion execute
FExecuteAction::CreateRaw(this, &FSuperManagerModule::OnDeleteUnusedAssetButtonClicked)
);
메뉴바에 FSlateIcon() 부분을 채워준다.
그렇게 완성한 아이콘은 다음과 같다.
너무 귀엽다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
커스텀 아이콘을 종료할 때 스타일셋을 해제시켜주는것도 잊으면 안된다.
void FSuperManagerStyle::ShutDown()
{
if (CreatedSlateStyleSet.IsValid())
{
FSlateStyleRegistry::UnRegisterSlateStyle(*CreatedSlateStyleSet);
CreatedSlateStyleSet.Reset();
}
}
스마트포인터를 해제하고
void FSuperManagerModule::ShutdownModule()
{
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(FName("AdvancedDeletion"));
FSuperManagerStyle::ShutDown();
}
모듈이 종료될 때 같이 호출해준다.
git->
https://github.com/InKyung-U/CustomEditor
GitHub - InKyung-U/CustomEditor
Contribute to InKyung-U/CustomEditor development by creating an account on GitHub.
github.com
'Unreal > Custom Editor' 카테고리의 다른 글
[UE 5.1] Custom Material Tool - 2 (1) | 2023.10.13 |
---|---|
[UE 5.1] Custom Material Tool - 1 (0) | 2023.10.11 |
[UE 5.1] Custom Slate Widget 04 (0) | 2023.09.19 |
[UE 5.1] Custom Slate Widget 03 (0) | 2023.09.13 |
[UE 5.1] Custom Slate Widget 02 (0) | 2023.09.12 |
- Total
- Today
- Yesterday
- 너비우선탐색
- 해시
- UE5
- C++
- sort
- 탐욕법
- BFS
- Ue
- 스택/큐
- IMGUI
- 완전탐색
- 누적합
- FPS
- 프로그래머스
- 고득점 Kit
- 정렬
- 고득점kit
- greedy
- 디자인 패턴
- 힙
- level3
- LV3
- DFS
- 채팅서버
- 데디케이티드
- 재귀
- Unreal 5.1
- Heap
- LV2
- 개인공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |