언리얼 위젯 애니메이션 C++

250x250

언리얼 위젯 애니메이션

언리얼 블루프린트에서 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);
}

위젯 애니메이션 실행.

위에서 보여드린 예제를 실행한 영상입니다.

Designed by JB FACTORY