天天看點

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"适用于向後相容的頭檔案,如果是老的項目,出現問題也可以引用試試