Slate
Slate란 Unreal Editor 또는 게임 내 사용자 인터페이스와 같은 도구 및 응용 프로그램용 사용자 인터페이스를 효율적으로 구축하도록 설계된 플랫폼에 구애받지 않는 맞춤형 사용자 인터페이스 프레임워크이다.
즉, UI를 만들 수 있는 프레임워크라고 생각하면 된다.
에디터에 있는 UI들도 만들 수 있지만, 인게임에 사용되는 UI도 생성가능하다.
하지만, 인게임 UI는 UMG를 통해 만드는 게 효율적이다.
UMG도 계속 부모를 타고가다보면 Slate를 이용하여 구현하였다.
예시
UButton의 클릭 처리를 할 때, OnClicked에 함수를 바인딩하여 사용한다.
MyButton->OnClicked.AddDynamic(this, &MyClass::MyOnClick);
Button클래스를 뜯어보면 OnClicked는 Delegate로 구현되어 있다.
UPROPERTY(BlueprintAssignable, Category="Button|Event")
FOnButtonClickedEvent OnClicked;
그렇다면 이 OnClicked가 어디서 Broadcast 되는지 찾아봐야 한다.
FReply UButton::SlateHandleClicked()
{
OnClicked.Broadcast();
return FReply::Handled();
}
Broadcast가 실행되는 곳은 SlateHandleClicked였다.
이 함수는 Slate에 의해 처리되는 함수이며, 실질적인 클릭 이벤트에 대한 처리를 한다.