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);

运行结果如下:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值