天天看点

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"适用于向后兼容的头文件,如果是老的项目,出现问题也可以引用试试