본문 바로가기

개인적인 팁

언리얼 툴바 메뉴 추가하기

엔진을 사용하다보면, 특정기능을 에디터에 추가하고 싶을때가있다.

아래처럼 툴바 메뉴에 카테고리랑, 버튼을 추가하는법을 기록해두려고한다.

여러 프로젝트에서, 사용할수도 있으니, 에디터를 상속받아서 작업하진 않고 플러그인으로 추가하려고한다.

편집->플러그인


+ 누가 버튼을 눌러주자

 

에디터 툴바 버튼을 눌러서 플러그인 생성

 

기본적으로 이렇게만 해도 툴바와, 플레이쪽에 알아서 추가된다 (갓리얼)

 

 

하지만, 내가원하는건 카테고리를 만들고 거기에 추가로 메뉴들을 추가하는것.

솔루션 탐색이에보면, 플러그인 폴더가 생긴걸 확인할수있고, 필요한 부분을 수정

 

아래코드처럼 하면 메인툴바에 추가 메뉴를 만들수있다.

void FMyToolBarMenuModule::RegisterMenus()
{
				
	// Owner will be used for cleanup in call to UToolMenus::UnregisterOwner
	FToolMenuOwnerScoped OwnerScoped(this);

	//메인메뉴를 가져와서
	UToolMenu* MainMenu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu");

	//메인메뉴에 추가 메뉴를 더한다.
	FToolMenuSection& Section = MainMenu->AddSection("MyToolBarMenu", FText::FromString("MyToolBarMenu Category"));
	Section.AddSubMenu(
		"MyToolBarMenu",
		LOCTEXT("MyToolBarMenuMenu", "개발메뉴"),
		LOCTEXT("MyToolBarMenuMenu_ToolTip", "개발메뉴 툴팁입니다."),
		FNewToolMenuChoice()
	);
	

	//플러그인 액션을 통한 메뉴들을 추가한다.
	{
		UToolMenu* Menu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu.MyToolBarMenu");
		{
			FToolMenuSection& MyToolBarSection = Menu->FindOrAddSection("WindowLayout");
			MyToolBarSection.AddMenuEntryWithCommandList(FMyToolBarMenuCommands::Get().PluginAction, PluginCommands);	

			//아래는 개인이 추가한것(위 코드의 PluginAction 정의된곳으로 가면 쉽게 추가할수있다.
			MyToolBarSection.AddMenuEntryWithCommandList(FMyToolBarMenuCommands::Get().PluginActionTest, PluginCommands);
		}
	}
}

 

혹시 한글이깨지는 경우 한글이 있는 문서를 유니코드로 저장 하면 해결된다.

다른이름으로 저장해서 바꿔주자.

 

메뉴 이미지는 아래 코드를 참조하면 추가할수있다.

TSharedRef< FSlateStyleSet > FMyToolBarMenuStyle::Create()
{
	TSharedRef< FSlateStyleSet > Style = MakeShareable(new FSlateStyleSet("MyToolBarMenuStyle"));
	Style->SetContentRoot(IPluginManager::Get().FindPlugin("MyToolBarMenu")->GetBaseDir() / TEXT("Resources"));

	Style->Set("MyToolBarMenu.PluginAction", new IMAGE_BRUSH_SVG(TEXT("PlaceholderButtonIcon"), Icon20x20));
	Style->Set("MyToolBarMenu.PluginActionTest", new IMAGE_BRUSH_SVG(TEXT("PlaceholderButtonIcon"), Icon20x20));
}