ContentBrowser 扩展
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| UToolMenu* Menu = UToolMenus::Get()->ExtendMenu("ContentBrowser.AssetContextMenu.AssetActionsSubMenu");
FToolMenuSection& Section = Menu->FindOrAddSection("AssetContextAdvancedActions");
Section.AddMenuEntry(
"HbhTest",
LOCTEXT("Hbh Test Title", "Hbh Test1"),
LOCTEXT("Hbh Test TooltipText", "Hbh Test2"),
FSlateIcon(),
FToolMenuExecuteAction::CreateLambda([this](const FToolMenuContext& InContext)
{
if (UContentBrowserAssetContextMenuContext* Context = InContext.FindContext<UContentBrowserAssetContextMenuContext>())
{
for (UObject* Asset : Context->GetSelectedObjects())
{
UE_LOG(LogTemp, Log, TEXT("%s"), *Asset->GetPathName());
}
}
})
);
|
对资产右键,效果:

弹窗
自定义一个弹窗:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| static const FName TabName("Your Tab Name");
FGlobalTabmanager::Get()->RegisterNomadTabSpawner(TabName, FOnSpawnTab::CreateRaw(this, &OnSpawnTab))
.SetDisplayName(LOCTEXT("xxx", "xxx"))
.SetMenuType(ETabSpawnerMenuType::Hidden);
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(TabName);
FGlobalTabmanager::Get()->TryInvokeTab(TabName);
TSharedRef<SDockTab> OnSpawnTab(const FSpawnTabArgs& SpawnTabArgs)
{
return SNew(SDockTab)
.TabRole(ETabRole::NomadTab)
[
SNew(xxx)
];
}
|
如果只是想要一个弹出窗口显示信息,可以直接使用 FMessageDialog:
https://docs.unrealengine.com/5.3/en-US/API/Runtime/Core/Misc/FMessageDialog/
https://zhuanlan.zhihu.com/p/268069477
1
2
3
4
5
| FMessageDialog::Open(EAppMsgType::Ok, NSLOCTEXT("xx", "xxx"));
int32 Count = 32;
FString Dialog = FString::Printf(TEXT("%d"), Count);
FMessageDialog::Open(EAppMsgType::Ok, FText::FromString(Dialog));
|

Notify/Notification
1
2
3
4
5
6
7
| #include "Framework/Notifications/NotificationManager.h"
#include "Widgets/Notifications/SNotificationList.h"
FText Message = FText::FromString("111");
FNotificationInfo NotifyInfo(Message);
NotifyInfo.FadeOutDuration = 5.f;
FSlateNotificationManager::Get().AddNotification(NotifyInfo);
|
https://zhuanlan.zhihu.com/p/605796062
https://zhuanlan.zhihu.com/p/662401350
进度条
1
2
3
4
5
6
7
8
9
10
| #include "Misc/ScopedSlowTask.h"
FScopedSlowTask SlowTask(files.Num(), LOCTEXT("GeneratingDataText", "Generating Data"));
SlowTask.MakeDialog();
for (auto& file : files)
{
SlowTask.EnterProgressFrame();
//Implementation can be before or after
}
|
参考:
https://forums.unrealengine.com/t/how-can-i-use-unreal-engine-editors-progress-bar-not-umg/359876
https://docs.unrealengine.com/5.3/en-US/API/Runtime/Core/Misc/FScopedSlowTask/