UE4 编辑器中使用UMG

编辑器Slate

在编辑器开发中,无论是官方的例子还是网上的经验,基本上99%都是使用Slate进行的。
Slate用起来还是比较蛋疼的,没有一个图形化的界面拼UI,全部靠代码撸在某些页面制作上的确是有点困扰的。
但其实习惯了还是可以的)

那么UMG是否可以在编辑器中使用呢?
答案是可以的。

Editor Utility Widget

先来看一个官方在UE4.22支持的一个功能 Editor UtilityWidget

官方地址:
https://docs.unrealengine.com/en-US/InteractiveExperiences/UMG/UserGuide/EditorUtilityWidgets/index.html
中文参考:
https://zhuanlan.zhihu.com/p/77512390

一段洋人做的纯蓝图+Editor Utility Widget做得编辑器插件过程
https://www.youtube.com/watch?v=u8c4Q2ve3AQ

制作UI看起来和普通的UI蓝图是一样的,里面的逻辑也可以通过蓝图的方式制作

但是这个东西用起来有个问题,
他只能通过 右键蓝图 或者菜单的固定位置唤起

而且它只能是以Tab的形式存在, 那我们可以在Slate中使用 Editor Utility Widget吗?

Slate 调用 Editor Utility Widget

  • 核心的方法是 TakeWidget()
  • 编辑器中需要一个World作为CreateWidget的参数
  • 我们还需要一个Window(也可以是其他Widget容器)去包含这个UMG的Widget
    UEditorUtilityWidgetBlueprint的GeneratedClass编译的时候会不可用,还只能用基类的,有点小疑惑

直接上代码:

	// Create a window for widget
	TSharedRef<SWindow> Window = SNew(SWindow)
		.Title(LOCTEXT("AddNewSkill", "Add New Skill"))
		.ClientSize(FVector2D(300, 200))
		.SupportsMinimize(false).SupportsMaximize(false);

	// Load widget from blueprint
	UBlueprint* Blueprint = LoadObject<UBlueprint>(NULL, TEXT("EditorUtilityWidgetBlueprint'/Game/MMODemo/UI/Blueprint/MainUI/NewSkillWindow.NewSkillWindow'"), NULL, LOAD_None, NULL);
	if (Blueprint && Blueprint->GeneratedClass->IsChildOf(UEditorUtilityWidget::StaticClass()))
	{
		// Get world for editor
		UWorld* World = GEditor->GetEditorWorldContext().World();

		TSubclassOf<UEditorUtilityWidget> WidgetClass = Blueprint->GeneratedClass;
		UEditorUtilityWidget* CreatedUMGWidget = CreateWidget<UEditorUtilityWidget>(World, WidgetClass);
		Window->SetContent(CreatedUMGWidget->TakeWidget());
	}

最终的结果展示

扩展到UUserWidget

其实上面的代码把 UEditorUtilityWidget 换成 UUserWidget也是完成成立的(本来UEditorUtilityWidget 就是继承于UUserWidget的 )

结果展示:(这里在我的编辑器窗体中加载了一个游戏用的UI界面)

在这个界面上绑定的蓝图也是直接有效,按钮都可以直接使用

总结

  • Slate仍然是主要制作编辑器UI的方式
  • UMG制作的UEditorUtilityWidgetBlueprint 可以在编辑器中直接使用,业务逻辑也可以全部用蓝图实现
  • UMG制作的界面UUserWidget以及他的子类UEditorUtilityWidgetBlueprint 都可以被Slate嵌套使用。在某些方面会比较方便
本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
UE4 编辑器中使用UMG
在编辑器开发中,无论是官方的例子还是网上的经验,基本上99%都是使用Slate进行的。 Slate用起来还是比较蛋疼的,没有一个图形化的界面拼UI,全部靠代码撸...
<<上一篇
下一篇>>