언리얼 위젯 애니메이션 C++
- 프로그래밍/언리얼
- 2024. 12. 18.
언리얼 위젯 애니메이션
언리얼 블루프린트에서 Widget Animation을 만들고 Cpp에서 사용하는 방법에 대한 글입니다.
위젯 애니메이션 만들기 Blueprint.
저는 보통 블루프린트에서 위젯과 애니메이션을 먼저 만듭니다.
순서는 이렇게 되겠네요.
1. 위젯 만들기 : 애니메이션을 적용할 위젯을 만듭니다.
2. 애니메이션 만들기 : 애니메이션 작업을 시작하기 위해 빈 애니메이션을 만듭니다.
3. 위젯 요소 선택하기 : 애니메이션을 적용할 위젯 요소(텍스트, 버튼 등등)를 선택합니다.
4. 열쇠모양을 누르기 : 이걸 눌러놓으면 Properties가 변경될 때 자동으로 Key를 추가합니다.
5. 프레임에 Key 추가 : 타임라인에 Key를 추가하여 애니메이션 동작을 설정합니다.
아래 사진은 예시로 보여드리는 사진입니다.
초기상태.
- Scale : 3배
- Render Opacity : 0
최종상태.
- Scale : 1배.
- Render Opacity : 1
위젯이 크고 안 보이는 상태로 있다가 점점 작아지고 보이게 됩니다.
위젯 애니메이션 변수 연결 / 재생 C++
위젯 애니메이션 변수 연결
블루프린트로 만들었던 애니메이션을 C++에서 사용하기 위해 변수를 연결해주겠습니다.
블루프린트로 만들었던 애니메이션과 이름을 똑같이 해서 UWidgetAnimation을 만들어줍니다.
UPROPERTY(Transient,meta = (BindWidgetAnim))
class UWidgetAnimation* MenuAnim;
간단하게 설명하면 이겁니다.
Transient : 이건 휘발성 데이터, 임시로 사용할거니까 저장 ㄴㄴ.
meta = (BindWidgetAnim) : 블루프린트에서 만든 애니메이션 중 이름이 같은 걸 자동으로 연결해 줘!
애니메이션 재생.
PlayAnimation으로 UWidgetAnimation을 불러주면 됩니다.
(아래 예시는 Menu를 부르면 위젯 애니메이션이 작동하고, Menu를 사용하는 동안 게임 내 시간이 흐르지 않습니다.)
void UMenuWidget::NativeConstruct()
{
Super::NativeConstruct();
//#include "Animation/WidgetAnimation.h"
PlayAnimation(MenuAnim);
if (GetOwningPlayer()) {
FInputModeUIOnly InputMode;
GetOwningPlayer()->SetInputMode(InputMode);
GetOwningPlayer()->SetShowMouseCursor(true);
}
//#include "Kismet\GameplayStatics.h"
UGameplayStatics::SetGlobalTimeDilation(GetWorld(), 0.f);
}
위젯 애니메이션 실행.
위에서 보여드린 예제를 실행한 영상입니다.