게임엔진/Unreal

[Unreal] UI 마우스 관한 동작 이벤트 설정방법

ShovelingLife 2022. 9. 8. 16:39

UI내 버튼이다.

총 5개의 이벤트가 존재하는데

  • On Clicked : 클릭할 시
  • On Pressed : 클릭한 후 지속적으로 누르고 있을 시
  • On Released : 클릭 후 뗐을 시
  • On Hovered : 마우스가 UI 범위 안에 들어왔을 시
  • On Unhovered : 마우스가 UI 범위 안에 들어온 후 벗어날 시

이벤트 그래프에서 각각의 함수들의 원형을 봤더니 리턴형 void에 파라미터 void이다. 즉 void 함수이름()

C++로 구현하고자 하는데 각각 해당되는 동작 클래스 변수로 되어있다.

각 클래스 원형들을 봤더니 아예 빈 껍데기이다 그래서 동적으로 바인딩하면 어떨까해서 해봤다.

클릭 이벤트 클래스 변수에 할당 해줬다.

void UInventoryListUI::InitButtons()
{
    BtnOrderAlphabet->SetClickMethod(EButtonClickMethod::MouseDown);
    BtnOrderAlphabet->OnClicked.AddDynamic(this, &UInventoryListUI::OrderAlphabetically);
    BtnOrderRecent->SetClickMethod(EButtonClickMethod::MouseDown);
    BtnOrderRecent->OnClicked.AddDynamic(this, &UInventoryListUI::OrderRecently);
}

UFUNCTION() void UInventoryListUI::OrderAlphabetically()
{
    GEngine->AddOnScreenDebugMessage(0, 1.f, FColor::Red, FString::Printf(TEXT("사전 순 정렬")));
}

UFUNCTION() void UInventoryListUI::OrderRecently()
{
    GEngine->AddOnScreenDebugMessage(1, 1.f, FColor::Cyan, FString::Printf(TEXT("최근 순 정렬")));
}