UE4 Slate HUD 学习笔记

一些事件的委托声明

UE4预定义了有些Widget相应时间如 FOnClicked
这个在文件#include "Framework/SlateDelegates.h"中
同时我们还可以自定一些响应事件如:

DECLARE_DELEGATE_TwoParams(FOnMouseEnter, const FGeometry&, const FPointerEvent&)
DECLARE_DELEGATE_OneParam(FOnMouseLeave, const FPointerEvent&)
class STowerButtonWidget : public SCompoundWidget
{
public:
	SLATE_BEGIN_ARGS(STowerButtonWidget)
	{}
	SLATE_EVENT(FOnClicked, OnClicked)
	SLATE_EVENT(FOnClicked, OnClickedDisabled)
	
	SLATE_EVENT(FOnMouseEnter, OnMouseEnterDel)
	SLATE_EVENT(FOnMouseLeave, OnMouseLeaveDel)
	
	SLATE_END_ARGS()

protected:
	FOnClicked OnClicked;
	FOnClicked OnClickedDisabled;
	FOnMouseEnter OnMouseEnterDel;
	FOnMouseLeave OnMouseLeaveDel;
};
然后通过重写相应的事件方法,来达到调用自定义事件的目标

宏定义

BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
END_SLATE_FUNCTION_BUILD_OPTIMIZATION

这两个宏定义之间的代码不会在编译的时候进行优化,可以提升编译的速度一般在UI中
都是包裹void Construct(const FArguments& InArgs)这个方法

关于SNew 和 SAssigneNew

SNew 返回的是TSharedRef
SAssignNew 返回的是TSharedPtr同时还要给他一个变量如SAssignNew(TitleContainer, SWeakWidget) 其中TitleContainer 是已经定义好的变量,SWeakWidget是要创建的组件类型

要引用的头文件

在使用Slate框架时要引用#include "SlateBasics.h"这个头文件,不然编译会出错,
#include "SlateExtras.h"适用于向后兼容的头文件,如果是老的项目,出现问题也可以引用试试


版权声明:本文为liuzhimu2018原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。