KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UFadeWidget.cpp
이 파일의 문서화 페이지로 가기
1// Copyright (c) 2025 Doppleddiggong. All rights reserved. Unauthorized copying, modification, or distribution of this file, via any medium is strictly prohibited. Proprietary and confidential.
2
8#include "UFadeWidget.h"
9#include "Animation/WidgetAnimation.h"
10#include "Components/Image.h"
11#include "GameLogging.h"
12
14{
15 Super::NativeConstruct();
16
17 // 초기 상태: 투명 (보이지 않음)
18 if (FadeImage)
19 {
20 FadeImage->SetVisibility(ESlateVisibility::HitTestInvisible);
21 FadeImage->SetOpacity(0.0f);
22 }
23}
24
25void UFadeWidget::FadeOut(float Duration)
26{
27 if (!FadeOutAnim)
28 {
29 PRINTLOG(TEXT("UFadeWidget::FadeOut - FadeOutAnim is null"));
30
31 // 애니메이션이 없으면 즉시 완료 처리
32 if (FadeImage)
33 {
34 FadeImage->SetOpacity(1.0f);
35 }
36 OnFadeOutComplete.Broadcast();
37 return;
38 }
39
40 // 애니메이션 완료 시 콜백 바인딩
41 FWidgetAnimationDynamicEvent AnimationFinishedDelegate;
42 AnimationFinishedDelegate.BindDynamic(this, &UFadeWidget::OnFadeOutAnimationFinished);
43
44 // 기존 바인딩 제거 후 새로 바인딩
45 BindToAnimationFinished(FadeOutAnim, AnimationFinishedDelegate);
46
47 // 페이드 아웃 애니메이션 재생 (속도 조절로 Duration 적용)
48 float AnimSpeed = FadeOutAnim->GetEndTime() / Duration;
49 PlayAnimation(FadeOutAnim, 0.0f, 1, EUMGSequencePlayMode::Forward, AnimSpeed);
50
51 PRINTLOG(TEXT("UFadeWidget::FadeOut - Animation started (Duration: %.2f)"), Duration);
52}
53
54void UFadeWidget::FadeIn(float Duration)
55{
56 if (!FadeInAnim)
57 {
58 PRINTLOG(TEXT("UFadeWidget::FadeIn - FadeInAnim is null"));
59
60 // 애니메이션이 없으면 즉시 완료 처리
61 if (FadeImage)
62 {
63 FadeImage->SetOpacity(0.0f);
64 }
65 OnFadeInComplete.Broadcast();
66 return;
67 }
68
69 // 애니메이션 완료 시 콜백 바인딩
70 FWidgetAnimationDynamicEvent AnimationFinishedDelegate;
71 AnimationFinishedDelegate.BindDynamic(this, &UFadeWidget::OnFadeInAnimationFinished);
72
73 // 기존 바인딩 제거 후 새로 바인딩
74 BindToAnimationFinished(FadeInAnim, AnimationFinishedDelegate);
75
76 // 페이드 인 애니메이션 재생 (속도 조절로 Duration 적용)
77 float AnimSpeed = FadeInAnim->GetEndTime() / Duration;
78 PlayAnimation(FadeInAnim, 0.0f, 1, EUMGSequencePlayMode::Forward, AnimSpeed);
79
80 PRINTLOG(TEXT("UFadeWidget::FadeIn - Animation started (Duration: %.2f)"), Duration);
81}
82
84{
85 PRINTLOG(TEXT("UFadeWidget::OnFadeOutAnimationFinished - FadeOut completed"));
86 OnFadeOutComplete.Broadcast();
87}
88
90{
91 PRINTLOG(TEXT("UFadeWidget::OnFadeInAnimationFinished - FadeIn completed"));
92 OnFadeInComplete.Broadcast();
93}
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
#define PRINTLOG(fmt,...)
Definition GameLogging.h:30
화면 페이드 인/아웃 효과를 제공하는 위젯
FOnFadeComplete OnFadeInComplete
페이드 인 완료 시 호출되는 델리게이트
Definition UFadeWidget.h:53
FOnFadeComplete OnFadeOutComplete
페이드 아웃 완료 시 호출되는 델리게이트
Definition UFadeWidget.h:47
void OnFadeOutAnimationFinished()
페이드 아웃 애니메이션 완료 콜백
TObjectPtr< class UWidgetAnimation > FadeInAnim
페이드 인 애니메이션 (블루프린트에서 정의)
Definition UFadeWidget.h:79
TObjectPtr< class UWidgetAnimation > FadeOutAnim
페이드 아웃 애니메이션 (블루프린트에서 정의)
Definition UFadeWidget.h:73
void FadeIn(float Duration=0.5f)
페이드 인 효과 시작 (화면이 밝아짐)
void FadeOut(float Duration=0.5f)
페이드 아웃 효과 시작 (화면이 어두워짐)
TObjectPtr< class UImage > FadeImage
페이드 이미지 (검은색 전체 화면)
Definition UFadeWidget.h:85
virtual void NativeConstruct() override
void OnFadeInAnimationFinished()
페이드 인 애니메이션 완료 콜백