UMG Animation

UMG Widget ¾Ö´Ï¸ÞÀ̼ǿ¡ ´ëÇؼ­ ¾Ë¾Æ º¸ÀÚ.
¿¡µðÅÍ¿¡¼­ Widget ¾Ö´Ï¸ÞÀ̼ÇÀ» ¸¸µéÁÙ ¾È´Ù°í °¡Á¤ÇÑ´Ù.

UWidgetAnimation ¼öÁý

UWidgetAnimation ¾Ö´Ï¸ÞÀ̼ÇÀ» TMap ÄÁÅ×À̳ʿ¡ Ãß°¡ÇÑ´Ù.

void CollectWidgetAnimation(UUserWidget* pWidget, TMap<FString, class UWidgetAnimation*>& FindWidgetAnimation)
{
    if (pWidget == nullptr)
        return;

    //4.22¿¡¼­´Â GetWidgetTreeOwningClass ¸Þ¼Òµå´Â protected Á¢±ÙÀÚÀÌ´Ù.
    //UWidgetBlueprintGeneratedClass* WidgetClass = pWidget->GetWidgetTreeOwningClass();
    //GetWidgetTreeOwningClass¿Í ¾Æ·¡´Â °°Àº °ªÀÌ´Ù.
    UWidgetBlueprintGeneratedClass* WidgetClass = Cast<UWidgetBlueprintGeneratedClass>(pWidget->GetClass());

    FindWidgetAnimation.Empty();

    for (int i = 0; i < WidgetClass->Animations.Num(); i++) {

        FName Name = WidgetClass->Animations[i]->MovieScene->GetFName();
        FindWidgetAnimation.Add(Name.ToString(), WidgetClass->Animations[i]);
    }
}

UWidgetAnimation ¾Ö´Ï¸ÞÀÌ¼Ç ½ÇÇà

¿©±â¼­´Â "MoveWidget"¶ó´Â UWidgetAnimationÀ» ½ÇÇàÇÑ´Ù.
PlayAnimationÀ¸·Î ½ÇÇà ÇÒ ¼ö ÀÖ´Ù.

    TMap<FString, UWidgetAnimation*> FindWidgetAnimation;
    CollectWidgetAnimation(this, FindWidgetAnimation);

    UWidgetAnimation** ppWidgetAnimation = FindWidgetAnimation.Find(TEXT("MoveWidget"));
    UWidgetAnimation* pWidgetAnimation = nullptr;
    if (ppWidgetAnimation)
        pWidgetAnimation = *ppWidgetAnimation;

    PlayAnimation(pWidgetAnimation, 0.0f, 1, EUMGSequencePlayMode::Forward, 1.0f);

¾Ö´Ï¸ÞÀ̼ÇÀÌ ³¡³µÀ»¶§ À̺¥Æ® µî·Ï

OnSequenceFinishedPlaying¿¡ Á¾·áµÉ¶§ ÇÔ¼ö¸¦ µî·ÏÇÏ¸é µÈ´Ù.
ÇÔ¼öÀÇ ½Ã±×´ÏÃÄ´Â Çì´õÆÄÀÏÀ» Âü°í ÇÑ´Ù.

https://answers.unrealengine.com/questions/152632/umg-animation-complete-blueprint-event.html
#if  0
    UUMGSequencePlayer** FoundPlayer = ActiveSequencePlayers.FindByPredicate([&](const UUMGSequencePlayer* Player) { return Player->GetAnimation() == pWidgetAnimation; });
    if(FoundPlayer)
        (*FoundPlayer)->OnSequenceFinishedPlaying().AddUObject(this, &UMainMenu::OnAnimationComplete);
#else
    ActiveSequencePlayers.Last()->OnSequenceFinishedPlaying().AddUObject(this, &UMainMenu::OnAnimationComplete);
#endif

//Çì´õ
void OnAnimationComplete(UUMGSequencePlayer& _player);

//CPP
void UMainMenu::OnAnimationComplete(UUMGSequencePlayer& _player)
{
    UE_LOG(LogTemp, Warning, TEXT("animation finish event"));
}

Âü°í)
https://answers.unrealengine.com/questions/152632/umg-animation-complete-blueprint-event.html