抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

UE5 Editor学习笔记

扩展MenuBar

参考

创建Editor Module

打开C++项目,创建一个Editor类型的UE Module

class FEdgeEditorModule : public IModuleInterface
{
public:
virtual void StartupModule() override;
virtual void ShutdownModule() override;
void AddMenu(FMenuBarBuilder& MenuBarBuilder);
void FileMenu(FMenuBuilder& MenuBuilder);
};
void FEdgeEditorModule::StartupModule()
{
// 在LevelEditor注册扩展
FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");
const TSharedPtr<FExtender> MenuExtender = MakeShareable(new FExtender());
MenuExtender->AddMenuBarExtension("Help", EExtensionHook::After, nullptr, FMenuBarExtensionDelegate::CreateRaw(this, &FEdgeEditorModule::AddMenu));
LevelEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuExtender);
}

void FEdgeEditorModule::AddMenu(FMenuBarBuilder& MenuBarBuilder)
{
// 创建一个下拉菜单
MenuBarBuilder.AddPullDownMenu(FText::FromString("Hard Edge"), FText::FromString("Hard Edge Tools"), FNewMenuDelegate::CreateRaw(this, &FEdgeEditorModule::FileMenu));
}
void FEdgeEditorModule::FileMenu(FMenuBuilder& MenuBuilder)
{
// 下拉菜单中添加一个选项,点击后会输出Log
MenuBuilder.AddMenuEntry(FText::FromString("A Tool"), FText::FromString("A Tool Tooltip"), FSlateIcon(), FUIAction(FExecuteAction::CreateLambda([]()
{
UE_LOG(LogEdgeEditor, Log, TEXT("A Tool Clicked"));
})));
}

自定义Log

// 在.h文件中定义
DECLARE_LOG_CATEGORY_EXTERN(LogEdgeEditor, All, All);
// 在 .cpp文件中实现,注意不能重复实现
DEFINE_LOG_CATEGORY(LogEdgeEditor);

编辑菜单

输入控制台命令

ToolMenus.Edit

即可编辑菜单栏

评论