구글링해도 안나와서 UUserWidget클래스를 참고했다
블루프린트에서 제목에 있는 함수들을 사용하려면 함수탭에서 오버라이드를 눌러서 만들면 된다.
이걸 C++로 옮기고 싶어서 시도해봤는데 OnTouch~()의 함수원형은 이렇게 생겼다
/**
* Called when a touchpad touch is ended (finger lifted)
*
* @param MyGeometry The geometry of the widget receiving the event.
* @param InTouchEvent The touch event generated
*/
UFUNCTION(BlueprintImplementableEvent, BlueprintCosmetic, Category="Touch Input")
FEventReply OnTouchEnded(FGeometry MyGeometry, const FPointerEvent& InTouchEvent);
보아하니 BluprintImplementableEvent로 인해 블루프린트에서 오버라이드를 할 수는 있지만
가상함수(virtual)가 아니라서 c++에서는 오버라이드가 불가능하다.
쫌~더 알아보니까 이런함수가 있더라
virtual FReply NativeOnTouchEnded( const FGeometry& InGeometry, const FPointerEvent& InGestureEvent );
FReply UUserWidget::NativeOnTouchEnded( const FGeometry& InGeometry, const FPointerEvent& InGestureEvent )
{
return OnTouchEnded( InGeometry, InGestureEvent ).NativeReply;
}
같은 OnTouchEnded지만 다른점은 함수명앞에 Native가 붙고, 리턴값이 조금다르고 내가 원하던 가상함수다.
고대로 이 함수를 오버라이드를 해보니 잘 작동된다.
오버라이드 결과물
FReply OnTouchMoved( const FGeometry& InGeometry, const FPointerEvent& InGestureEvent ) override;
FReply UMy_UI::OnTouchMoved( const FGeometry& InGeometry, const FPointerEvent& InGestureEvent )
{
Super::OnTouchMoved(InGeometry, InGestureEvent);
//FReply::Unhandled();
return FReply::Handled();
}
'언리얼엔진' 카테고리의 다른 글
[UE4]패키징시 데이터테이블 누락관련문제... (0) | 2023.09.16 |
---|---|
[UE4] 구조체 세이브 (0) | 2022.06.28 |
[UE4] 세이브된 구조체가 변경되었다면? (0) | 2022.06.28 |
[UE4]데이터 테이블(DataTable) C++ (0) | 2022.03.01 |