文章目錄
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();