文章目录
一、菜单栏或工具栏中创建拓展项
首先区分几个概念:MenuBar、Menu、Toolbar。
MenuBar:横向的可交互菜单项

Menu:纵向菜单

Toolbar:工具栏

在StartModule中创建拓展项
通过FExtender对象的三个方法可以分别绑定上述三种方法的拓展项。然后通过LevelEditorModule模块的GetMenuExtensibilityManager和GetToolBarExtensibilityManager方法获取并绑定拓展项以实现对菜单及Toolbar的拓展功能。
//加载LevelEditor模块,LevelEditor模块负责的就是打开UE4编辑器首先映入眼帘的各个编辑窗口。其中包括菜单栏、工具栏、视窗、详情面板、Modes面板、世界大纲面板等GUI功能。
FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");
{
//创建菜单栏项
//创建拓展
TSharedPtr<FExtender> MenuBarExtender = MakeShareable(new FExtender());
/**
@Param FName ExtensionHook. 项所在位置
@Param EExtensionHook::Position HookPosition. 更具体的表示在ExtensionHook的相对位置:Before、After、First
@Param const TSharedPtr< FUICommandList >& CommandList. 触发命令
@Param const FMenuBarExtensionDelegate& MenuBarExtensionDelegate. 单播委托。绑定一个方法,方法是关于返回拓展项的信息。
*/
MenuBarExtender ->AddMenuBarExtension("Help", EExtensionHook::After, PluginCommands, FMenuBarEtensionDelegate::CreateRaw(this, &FStandaloneWinModule::AddMenuBarExtension));
//添加拓展项到关卡编辑器
LevelEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuBarExtender);
}
{
//创建菜单拓展项,就是菜单栏内的子项
TSharedPtr<FExtender> MenuExtender = MakeShareable(new FExtender());
MenuExtender->AddMenuExtension("WindowLayout", EExtensionHook::After, PluginCommands, FMenuExtensionDelegate::CreateRaw(this, &FStandaloneWinModule::AddMenuExtension));
LevelEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuExtender);
}
{
//创建工具栏拓展项
TSharedPtr<FExtender> ToolBarExtender = MakeShareable(new FExtender());
ToolBarExtender->AddToolBarExtension("Settings", EExtensionHook::After, PluginCommands, FToolBarExtensionDelegate::CreateRaw(this, &FStandaloneWinModule::AddToolBarExtension));
LevelEditorModule.GetToolBarExtensibilityManager()->AddExtender(ToolBarExtender);
}
拓展想项委托方法
当编辑器启动后,会调用我们绑定到拓展项的委托方法以实现功能拓展,而调用方法的Builder则可以用于构建UI。三种常用的Builder分别是FMenuBarBuilder、FMenuBuilder、FToolBarBuilder分别对应开头讲的三种拓展菜单。
//此方法是创建一个菜单栏拓展项的委托方法,其它两个方法与此类似。
void AddMenuBarExtension(FMenuBarBuilder& Builder)
{
//AddMenuEntry有多个重载方法。可以通过其设置显示文本、提示文本、图标等参数。
Builder.AddMenuEntry(FStandaloneWinCommands::Get().OpenPluginWindow);
}
void AddMenuExtension(FMenuBuilder& Builder)
{
Builder.AddMenuEntry(FStandaloneWinCommands::Get().OpenPluginWindow);
}
void AddToolbarExtension(FToolBarBuilder& Builder)
{
//添加一个工具栏按钮
Builder.AddToolBarButton(FStandaloneWinCommands::Get().OpenPluginWindow);
//添加一个下拉菜单
Builder.AddComboButton(
FUIAction(), FOnGetContent::CreateRaw(this, &FAssetCheckToolModule::ToolbarPulldownExtension),
LOCTEXT("PullDown", "Pull-down"),
LOCTEXT("PullDownTip", "Pull-down Tip"),
FSlateIcon(), true);
}
菜单栏拓展项:

创建的菜单拓展项:

工具栏拓展项:

上面构建菜单栏、菜单和工具栏拓展项的显示参数分别使用FMenuBarBuilder、FMenuBuilder和FToolBarBuilder。他们的继承关系为:
2万+



被折叠的 条评论
为什么被折叠?



