public://~ SWidget overridesvirtualint32OnPaint(constFPaintArgs&Args,constFGeometry&AllottedGeometry,constFSlateRect&MyCullingRect,FSlateWindowElementList&OutDrawElements,int32LayerId,constFWidgetStyle&InWidgetStyle,boolbParentEnabled)constoverride;virtualboolSupportsKeyboardFocus()constoverride;virtualvoidOnFoc...
Slate的代码风格如下: Slate 控件的类命名一般以 S开头 可以通过以下函数来快速构建Slate控件: SNew( WidgetType, ... ):通用的构造方式 SAssignNew( ExposeAs, WidgetType, ... ):构造完成后,把控件赋值给ExposeAs SArgumentNew( InArgs, WidgetType, ... ):使用参数集进行构造 在构造的代码表达式中,可以...
请注意,在创建新UMG Widget时,始终必须实现这两个方法 - RebuildWidget负责构建 Slate Widget, ReleaseSlateResources负责清理资源。 2、最小Slate Widget类 这是UMG Widget类引用的 Slate 类: class CUSTOMWIDGET_API SSlateSlice : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SSlateSlice) {} SLATE_END...
不同于其他类,基于SCompoundWidget的子类,有一段SLATE_BEGIN_ARGS(NewWidget) {} SLATE_END_ARGS()的宏,这里的宏是来让我们自定义控件中的参数、事件、插槽等等;而且还有一个属于Swidget专属的构造函数void Construct(const FArguments& InArgs); 1 声明自定义参数 在上述宏中我们可以用SLATE_ATTRIBUTE(属性)、...
SLATE_BEGIN_ARGS(STestEditorViewport){} SLATE_END_ARGS() void Construct(const FArguments& InArgs); STestEditorViewport(); ~STestEditorViewport(); protected: virtual TSharedRef<FEditorViewportClient> MakeEditorViewportClient() override; }; ...
在SLATE_BEGIN_ARGS和SLATE_END_ARGS两个宏中间写上宏SLATE_ARGUMENT(float, f1),第一个参数为数据类型,第二个参数为变量名称。此时就可以在cpp文件的构造函数中使用其变量,获取的方式:通过InArgs“.”出来。 voidStest::Construct(constFArguments&InArgs){floatf2=InArgs._f1;/* ChildSlot [ // Populate th...
SLATE_BEGIN_ARGS(SXJS_ScrollBox),这个宏在SXJS_ScrollBox类中构造了一个FArguments的结构体。 SLATE_STYLE_ARGUMENT... 设置参数,结构体FArguments& Inargs里的变量只起到传递作用,要在构造的类里,自己再新建变量来保存对应的值,然后使用这个对应值来做更改。
2. 根据HittestGrid来构建FPaintArgs对象,这是为了在渲染过程中提供有关点击区域的信息,确保控件可以访问到这些信息以正确处理用户输入事件。 3. 创建一个FSlateInvalidationContext对象,用于存储与渲染相关的上下文信息,如图元列表、父控件的可见性以及上面的FPaintArgs对象。
Slate渲染由Game线程驱动,收集渲染单元并转换成渲染参数打包推送到渲染线程,渲染线程依据渲染参数分批生成RHICommand,RHIConmand调用图形库API设置渲染状态和绘制。 RHICommand是多态的,提供了OpenGL,D3D,Vulkan等多个图像库对应的子类。 渲染流程图 渲染相关类图 ...