提供Demo UE5 主窗口添加菜单栏
时间: 2023-07-19 17:12:08 浏览: 236
好的,下面是一个简单的示例代码,演示如何向UE5主窗口添加自定义菜单栏:
```cpp
#include "MyEditorWindow.h"
#include "Framework/MultiBox/MultiBoxBuilder.h"
#include "Modules/ModuleManager.h"
#include "LevelEditor.h"
void FMyEditorWindow::StartupModule()
{
// 获取主编辑窗口的引用
TSharedPtr<SLevelEditor> LevelEditor = FModuleManager::LoadModuleChecked<ILevelEditorModule>("LevelEditor").GetFirstLevelEditor();
// 添加自定义菜单栏
TSharedRef<FExtender> MenuExtender = MakeShareable(new FExtender());
MenuExtender->AddMenuBarExtension(
"Help",
FUIAction(),
FMenuExtensionDelegate::CreateRaw(this, &FMyEditorWindow::AddMenuExtension)
);
LevelEditor->GetMenuExtensibilityManager()->AddExtender(MenuExtender);
}
void FMyEditorWindow::ShutdownModule()
{
}
void FMyEditorWindow::AddMenuExtension(FMenuBuilder& MenuBuilder)
{
// 添加自定义菜单
MenuBuilder.BeginSection("MyMenu", LOCTEXT("MyMenu", "My Menu"));
{
MenuBuilder.AddMenuEntry(
FText::FromString("My Command"),
FText::FromString("Execute My Command"),
FSlateIcon(),
FUIAction(FExecuteAction::CreateRaw(this, &FMyEditorWindow::ExecuteMyCommand))
);
}
MenuBuilder.EndSection();
}
void FMyEditorWindow::ExecuteMyCommand()
{
// 执行自定义命令
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("My Command Executed!"));
}
```
这里我们创建了一个名为`MyEditorWindow`的C++类,并实现了`StartupModule`、`ShutdownModule`、`AddMenuExtension`和`ExecuteMyCommand`方法。其中`StartupModule`方法在模块启动时被调用,用于向主窗口添加自定义菜单栏;`ShutdownModule`方法在模块停止时被调用;`AddMenuExtension`方法用于添加自定义菜单,`ExecuteMyCommand`方法用于执行自定义命令。
在`AddMenuExtension`方法中,我们使用`FMenuBuilder`类来创建和添加菜单项,其中`BeginSection`方法用于开始一个新的菜单,`AddMenuEntry`方法用于添加菜单项,`EndSection`方法用于结束一个菜单。在`ExecuteMyCommand`方法中,我们使用`GEngine->AddOnScreenDebugMessage`方法来向屏幕添加调试信息,以证明我们的自定义命令已经被执行。
希望这个示例代码可以帮助您了解如何向UE5主窗口添加自定义菜单栏。
阅读全文