除了UMG框架以外,在UE引擎中,还有一个叫做【Slate】的UI框架,它其实才是UE引擎中UI真正的底层实现方式。Slate提供了一种基于【C++ 编程语言】的方式来定义和构建UI,它采用了一种类似于Web开发的方式来构建UI,通过使用声明式语法定义UI的结构和样式。 Slate框架具有以下的优缺点: 优点:Slate具有高性能、即时响应、跨...
其中,UMG是Slate的封装,UMG继承了UObject从而支持反射、蓝图等功能;而Slate则包含了大部分的控件逻辑,包括控件的绘制等方法。 Slate和UMG的关系如下所示: UCLASS(Abstract,BlueprintType,Blueprintable)classUMG_APIUWidget:publicUVisual{GENERATED_UCLASS_BODY()// ...protected:TWeakPtr<Swidget>MyWidget;// ...}...
UMG是基于原先的Slate封装开发的GUI.UE4提供了可视化编辑器用于用户编辑自己GUI系统同时UMG组件还添加了很多事件和方法并支持BP Slate则是完全C++代码化的,所有的布局和组件创建只能用C++实现(Slate有一些更底层的组件,如SSplitter等,更便于开发复杂UI). 这篇随笔用于记录一些文档以外一些UMG和Slate的一些问题和混用例子(...
UMG与Slate:虚幻图形界面设计器(Unreal Motion Graphics UI Designer)(UMG)为 UI编辑工具,可以用来创建UI元素,布局和UI动画。此编辑器下每一个控件对应一个U版控件。U版的控件仅仅是Slate控件的容器,Slate控件是真正执行控件逻辑(包括渲染和事件)的地方。从代码中可以看到一个U版控件总会包含一个S版的控件指针,如U...
五、将函数调用附加到Slate事件 虽然创建按钮是一件好事,但目前,任何我们添加到播放器屏幕上的 UI 元素都只是显示在那里,没有任何事情发生,即使用户点击它。 我们目前没有任何附加到 Slate 元素的事件处理程序,所以诸如鼠标点击之类的事件实际上不会导致任何事情发生。
UE4 编辑器中使用UMG 编辑器Slate 在编辑器开发中,无论是官方的例子还是网上的经验,基本上99%都是使用Slate进行的。 Slate用起来还是比较蛋疼的,没有一个图形化的界面拼UI,全部靠代码撸在某些页面制作上的确是有点困扰的。 (但其实习惯了还是可以的)
本文基于UE4 4.26版本引擎源码,探讨Slate绘制流程及合批机制。Slate与UMG共同构成UE4 UI系统,UMG作为Slate的封装,支持反射、蓝图等特性;Slate则负责控件逻辑,如绘制等。Slate控件基类为SWidget,常见子类包括无子控件的SLeafWidget、单子控件的SCompoundWidget和多子控件的SPanel。常用控件继承关系清晰。Sl...
Slate Slate 是完全自定义、与平台无关的UI框架 应用 可用于编辑器UI,编辑器的大部分界面都是使用 Slate 构建的 可做为游戏UI 可作为独立应用开发 只能C++ 开发 可以调用 UMG,使用TakeWidget() HUD HUD通常只显示,不互动 可绘制文本、线条等 GameMode 设置 ...
UMG是UE引擎中的UI工具,允许开发者设计复杂UI元素。UMG控件如CanvasPanel、Text、Image分别对应源码中的UCanvasPanel、UTextBlock、UImage,它们都继承自UWidget基类。Slate框架是底层实现,具有高性能等优点,但复杂控件的实现成本较高。UMG基于Slate进行封装,通过组合思想,每个UMG控件内部包含对应的Slate...