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 |