UE4 手把手教你做插件(3) 万能三招在任意编辑窗口加按钮

0,前言

我看的是 技术宅阿棍儿 的视频,B站有。

系列视频:从代码引用插件_哔哩哔哩_bilibili

这一节开始之前需要做如下配置,然后重启ue

1,创建一个插件

添加之后就会看到以下目录:

2,粗浅解读代码

添加完之后,UE会自动生成以下示例代码:

FMyEditorToolbarButtonModule.cpp

这部分视频讲得很清楚,建议去看看

//创建一个命令
PluginCommands = MakeShareable(new FUICommandList);

//创建一个委托,将它映射到PluginAction
PluginCommands->MapAction(
		FFMyEditorToolbarButtonModuleCommands::Get().PluginAction,
		FExecuteAction::CreateRaw(this, &FFMyEditorToolbarButtonModuleModule::PluginButtonClicked),
		FCanExecuteAction());

//获取关卡编辑器的主菜单的窗口菜单
UToolMenu* Menu = UToolMenus::Get()->ExtendMenu("LevelEditor.MainMenu.Window");
{
    //获取WindowLayout字段
	FToolMenuSection& Section = Menu->FindOrAddSection("WindowLayout");
			        
//将创建的委托和命令传入
Section.AddMenuEntryWithCommandList(FFMyEditorToolbarButtonModuleCommands::Get().PluginAction, PluginCommands);
}

3,传统的方式添加一个按钮

在FMyEditorToolbarButtonModule.cpp文件的函数void FFMyEditorToolbarButtonModuleModule::RegisterMenus()中:

IAnimationBlueprintEditorModule& AnimationBlueprintEditorModule = FModuleManager::LoadModuleChecked<IAnimationBlueprintEditorModule>("AnimationBlueprintEditor");
{
	TSharedPtr<FExtender> MenuExtender = MakeShareable(new FExtender);
	MenuExtender->AddMenuExtension("HelpApplication", EExtensionHook::After, PluginCommands, FMenuExtensionDelegate::CreateRaw(this, &FMyEditorToolbarButtonModule::AddMenuExtension));
	AnimationBlueprintEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuExtender);
}

这里我将动画蓝图编辑器改成了关卡编辑器模块

FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");

全部代码如下:

	FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");
	TSharedPtr<FExtender> PXEditToolBarExtender1 = MakeShareable(new FExtender);
	PXEditToolBarExtender1->AddToolBarExtension("Content", EExtensionHook::After, NULL, FToolBarExtensionDelegate::CreateStatic([](FToolBarBuilder& Builder) {
		Builder.BeginSection(TEXT("MyButton"));
	Builder.AddToolBarButton(FFMyEditorToolbarButtonModuleCommands::Get().PluginAction, NAME_None, LOCTEXT("PXEditToolBarExport", "Export111"), LOCTEXT("PXEditToolBarExportTip", "Export Sobey3D Template"), FSlateIcon("Bar3DStyle", "ClassThumbnail.PXButtonExport"));
	Builder.AddToolBarButton(FFMyEditorToolbarButtonModuleCommands::Get().PluginAction, NAME_None, LOCTEXT("PXEditToolBarImport", "Import111"), LOCTEXT("PXEditToolBarImportTip", "Import Sobey3D Template"), FSlateIcon("Bar3DStyle", "ClassThumbnail.PXButtonImport"));
	Builder.EndSection();
		}));
	LevelEditorModule.GetToolBarExtensibilityManager()->AddExtender(PXEditToolBarExtender1);

运行结果如下:

猜你喜欢

转载自blog.csdn.net/asiwxy/article/details/129140013