0,前言
我看的是 技术宅阿棍儿 的视频,B站有。
这一节开始之前需要做如下配置,然后重启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);
运行结果如下: