一些事件的委托声明
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同时还要给他一个变量如
其中TitleContainer 是已经定义好的变量,SWeakWidget是要创建的组件类型
SAssignNew(TitleContainer, SWeakWidget)
要引用的头文件
在使用Slate框架时要引用
#include "SlateBasics.h"
这个头文件,不然编译会出错,
#include "SlateExtras.h"适用于向后兼容的头文件,如果是老的项目,出现问题也可以引用试试