文章目录
ContentBrowser
后边会用到ContentBrowser模块,先获取此模块。
//模块获取
FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>("ContentBrowser");
//ContentBrowser模块的可拓展菜单,下面将介绍常用的部分,剩余拓展相似。
ContentBrowserModule.GetAllAssetContextMenuExtenders();
ContentBrowserModule.GetAllAssetViewContextMenuExtenders();
ContentBrowserModule.GetAllAssetViewViewMenuExtenders();
ContentBrowserModule.GetAllCollectionListContextMenuExtenders();
ContentBrowserModule.GetAllCollectionViewContextMenuExtenders();
ContentBrowserModule.GetAllPathViewContextMenuExtenders();
//命令拓展
ContentBrowserModule.GetAllContentBrowserCommandExtenders();
//拖拽拓展
ContentBrowserModule.GetAssetViewDragAndDropExtenders();
一、创建资源菜单
在ContentBrowser右侧空白区域右击鼠标显示的菜单拓展,即新建资源菜单的拓展。
先展示效果:
//获取菜单的拓展项委托数组
auto& ACMExtenders = ContentBrowserModule.GetAllAssetContextMenuExtenders();
//添加因为拓展项委托
ACMExtenders.Add(FContentBrowserMenuExtender_SelectedPaths::CreateRaw(this, &FStandaloneWinModule::ACMExtender));
//参数是用户右击鼠标时的目录地址,返回值是拓展项
TSharedRef<FExtender> FStandaloneWinModule::ACMExtender(const TArray<FString>& Paths)
{
//创建拓展项
TSharedPtr<FExtender> Extender = MakeShareable(new FExtender());
//设置拓展项参数,我们这里绑定了一个菜单项委托
Extender->AddMenuExtension("ContentBrowserNewAdvancedAsset", EExtensionHook::After, PluginCommands, FMenuExtensionDelegate::CreateRaw(this, &FStandaloneWinModule::AddMenuExtension));
return Extender.ToSharedRef();
}
二、选中资源菜单
auto& AVCMExtender = ContentBrowserModule.GetAllAssetViewContextMenuExtenders();
AVCMExtender.Add(FContentBrowserMenuExtender_SelectedAssets::CreateRaw(this, &FStandaloneWinModule::AVCMExtender));
//参数是选中的资源列表,后边不再赘述委托方法,参数可以参考委托声明
TSharedRef<FExtender> FStandaloneWinModule::AVCMExtender(const TArray<FAssetData>& AssetData)
{
TSharedPtr<FExtender> Extender = MakeShareable(new FExtender);
FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>("ContentBrowser");
Extender->AddMenuExtension("AssetCode", EExtensionHook::After, PluginCommands, FMenuExtensionDelegate::CreateRaw(this, &FStandaloneWinModule::AddMenuExtension));
return Extender.ToSharedRef();
}
三、ViewOptions菜单
auto& AVVMExtenders = ContentBrowserModule.GetAllAssetViewViewMenuExtenders();
在ViewOption中添加一个Viewport的UI拓展项
四、Collections面板选中Tags菜单
auto& CCMExtenders = ContentBrowserModule.GetAllCollectionListContextMenuExtenders();
五、Collections面板添加Tags菜单
auto& CVCMExtenders = ContentBrowserModule.GetAllCollectionViewContextMenuExtenders();
六、ContentBrowser目录(文件夹)菜单
auto& PVCMExtenders = ContentBrowserModule.GetAllPathViewContextMenuExtenders();