Files
ChildHood/Source/ChildHood/Collection/CollectionCompleteWidget.h
T
2026-06-15 05:13:28 +08:00

70 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ChildHood Project - 收集完成提示 UI 基类
// 对应技术方案: docs/technical/收集系统-技术方案.md 第3节(UCollectionCompleteWidget)+ 第7节
// 职责:全部收集完成时的屏幕中央提示(淡入→停留→淡出→移除)
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "CollectionCompleteWidget.generated.h"
class UTextBlock;
/**
* UCollectionCompleteWidget — 全部收集完成中心提示(执行案第四节「全部收集完成表现」)。
*
* 屏幕正中央弹出「杂物全部收集完成!」白色大字,显示 2.0s 后淡出移除。
* 三段时序:淡入 → 停留(DisplayDuration) → 淡出 → RemoveFromParent。
*
* 绑定要求(蓝图 WBP_CollectionComplete 继承本类):
* - TextBlock 名 "CompleteTextBlock" — 完成文字
* - WidgetAnimation 名 "FadeInAnim" — 淡入动画
* - WidgetAnimation 名 "FadeOutAnim" — 淡出动画
*
* 布局要求:Anchors Center,白色大字,屏幕正中。
*/
UCLASS(Abstract, Blueprintable)
class UCollectionCompleteWidget : public UUserWidget
{
GENERATED_BODY()
public:
/** 显示完成提示:设置文字,启动淡入→停留→淡出时序 */
UFUNCTION(BlueprintCallable, Category = "Collection|Complete")
void ShowComplete(const FString& Text, float DisplayDuration, float InFadeOutDuration);
protected:
/** 完成文字 TextBlock,蓝图子类必须有同名 TextBlock */
UPROPERTY(meta = (BindWidget))
UTextBlock* CompleteTextBlock;
/** 淡入动画,蓝图子类必须有同名 WidgetAnimation */
UPROPERTY(meta = (BindWidgetAnim), Transient)
UWidgetAnimation* FadeInAnim;
/** 淡出动画,蓝图子类必须有同名 WidgetAnimation */
UPROPERTY(meta = (BindWidgetAnim), Transient)
UWidgetAnimation* FadeOutAnim;
/** 停留计时器(淡入结束后启动,到时触发淡出)*/
FTimerHandle StayTimerHandle;
/** 淡出计时器(淡出开始后启动,到时移除 Widget)*/
FTimerHandle FadeOutTimerHandle;
/** 淡出时长(缓存)*/
float CachedFadeOutDuration = 0.5f;
virtual void NativeOnInitialized() override;
private:
/** 停留结束 → 播放淡出动画 */
void StartFadeOut();
/** 淡出时长到 → RemoveFromParent */
void OnFadeOutComplete();
};