[Unreal Engine C++] Widget Animation Delegate

2024. 1. 9. 16:18· Unreal Engine/C++

 

 위젯 애니메이션은 시작과 끝에 Delegate를 사용하여 특정 함수를 실행할 수 있습니다. 예를 들어 위와 같이 대미지를 표시하는 폰트는 대미지를 출력한 후 위젯 애니메이션으로 FadeOut 되면서 완전히 사라질 때 위젯 애니메이션의 끝에 선언한 Delegate를 실행하여 폰트를 제거합니다.

 이처럼 위젯 애니메이션의 시작과 끝에 Delegate를 사용하여 활용한 코드는 다음과 같습니다.

 

// SampleWidget.h
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "PRDamageAmountWidget.generated.h"

UCLASS()
class PROJECTSAMPLE_API SampleWidget : public UUserWidget
{
	GENERATED_BODY()

protected:
	virtual void NativeConstruct() override;
    
private:
	/** WidgetAnim이 시작할 때 실행하는 함수입니다. */
	UFUNCTION()
	void OnWidgetAnimStarted();

	/** WidgetAnim이 끝났을 때 실행하는 함수입니다. */
	UFUNCTION()
	void OnWidgetAnimFinished();

private:
	/** Sample WidgetAnimation입니다. */
	UPROPERTY(BlueprintReadWrite, Transient, Category = "WidgetAnimation", meta = (AllowPrivateAccess = "true", BindWidgetAnim))
	UWidgetAnimation* SampleWidgetAnim;

public:
	/** WidgetAnim이 시작할 때 실행하는 Delegate입니다. */
	FWidgetAnimationDynamicEvent WidgetAnimStartedDelegate;

	/** WidgetAnim이 끝났을 때 실행하는 Delegate입니다. */
	FWidgetAnimationDynamicEvent WidgetAnimFinishedDelegate;
};
// SampleWidget.cpp
// Fill out your copyright notice in the Description page of Project Settings.


#include "Widgets/SampleWidget.h"

void USampleWidget::NativeConstruct()
{
	Super::NativeConstruct();

	if(SampleWidgetAnim)
	{
		// 위젯 애니메이션이 시작할 때 실행할 Delegate에 함수를 바인딩
		WidgetAnimStartDelegate.BindDynamic(this, &USampleWidget::OnWidgetAnimStarted);
		BindToAnimationStarted(SmpleWidgetAnim, WidgetAnimStartesDelegate);
	
		// 위젯 애니메이션이 끝났을 때 실행할 Delegate에 함수를 바인딩
		WidgetAnimFinishedDelegate.BindDynamic(this, &USampleWidget::OnWidgetAnimFinished);
		BindToAnimationFinished(SampleWidgetAnim, WidgetAnimFinishedDelegate);
	    
		// 위젯 애니메이션 재생
		PlayAnimationForward(SampleWidgetAnim);
	}
}

void USampleWidget::OnWidgetAnimStarted()
{
	// 위젯 애니메이션이 시작할 때 실행할 코드
}

void USampleWidget::OnWidgetAnimFinished()
{
	// 위젯 애니메이션이 끝났을 때 실행할 코드
}

 

 UMG의 위젯 애니메이션을 Bind해서 C++에서 변수로 사용하려면 UPROPERTY에 Trasient와 meta에 BindWidgetAnim을 추가해야 합니다.

저작자표시 (새창열림)

'Unreal Engine > C++' 카테고리의 다른 글

[Unreal Engine C++] EnhancedInputSystem의 입력 값 구하기  (1) 2024.03.15
[Unreal Engine C++] C++에서 인터페이스 변수 사용하기  (0) 2024.01.12
[Unreal Engine 4 C++] TimeStop (시공단열/초산 회피)  (0) 2023.08.02
[Unreal Engine 4 C++] UObject에서 Tick함수 사용하는 법  (0) 2023.07.10
[Unreal Engine 4 C++] C++에서 참조 인자를 가진 함수를 블루프린트에서 호출할 때 출력이 아닌 입력으로 참조 인자 사용하기  (0) 2023.01.10
'Unreal Engine/C++' 카테고리의 다른 글
  • [Unreal Engine C++] EnhancedInputSystem의 입력 값 구하기
  • [Unreal Engine C++] C++에서 인터페이스 변수 사용하기
  • [Unreal Engine 4 C++] TimeStop (시공단열/초산 회피)
  • [Unreal Engine 4 C++] UObject에서 Tick함수 사용하는 법
한돌이
한돌이
GameProgramer 취업준비 중 onestone3647@gmail.com
한돌이
Lykan Studio
한돌이
전체
오늘
어제
  • 분류 전체보기 (101)
    • Daily Life (0)
    • Project (15)
      • Replica (10)
      • CE (1)
      • T (4)
    • Unreal Engine (73)
      • C++ (40)
      • Blueprint (5)
      • AI (5)
      • Effect (3)
      • UMG (2)
      • Error (2)
      • etc. (15)
    • Study (8)
      • C++ (2)
      • Algorithm (0)
      • API (4)
      • Git (2)
    • etc. (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Unreal Engine4 Effect
  • Project Replica
  • ProjectReplica
  • Unreal Engine4
  • UnrealEngine4
  • Unreal Engine 4 Error
  • .etc
  • 자소서
  • GIT
  • ProjectT
  • Unreal Engine etc.
  • etc.
  • ETC
  • Project T
  • project
  • 오류
  • API
  • ADB
  • Unreal Engine 4
  • Study
  • c++
  • Unreal Engine 4 C++
  • error
  • threadsafe
  • Unreal Engine 5
  • daily life
  • Unreal Engine

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
한돌이
[Unreal Engine C++] Widget Animation Delegate
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.