Files
ChildHood/Source/ChildHood/Interaction/NarrativeTextWidget.h
T

67 lines
2.1 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 第6节(通用文本显示UI)
// 职责:半透明底框 + 一句话叙事/对话文本,带淡入淡出
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "NarrativeTextWidget.generated.h"
class UTextBlock;
/**
* UNarrativeTextWidget
*
* 文本底框 UI 的 C++ 基类。蓝图子类(WBP_NarrativeText)继承此类,
* 在 UMG 编辑器中布局可视组件,并确保组件名与 BindWidget 匹配。
*
* 绑定要求:
* - TextBlock 名为 "NarrativeTextBlock" — 显示叙事/对话文字
* - WidgetAnimation 名为 "FadeInAnim" — 淡入动画(0.2s)
* - WidgetAnimation 名为 "FadeOutAnim" — 淡出动画(0.2s)
*
* 布局要求:
* - Anchors: Horizontal Center, Vertical ~0.6(屏幕中心偏下)
* - Border: 半透明黑色背景(~60%),圆角,SizeToContent
* - TextBlock: 白色文字,居中,自动换行
*/
UCLASS(Abstract, Blueprintable)
class UNarrativeTextWidget : public UUserWidget
{
GENERATED_BODY()
public:
/** 设置叙事文本内容 */
UFUNCTION(BlueprintCallable, Category = "Interaction|Narrative")
void SetNarrativeText(const FString& Text);
/** 显示文本(播放淡入动画) */
UFUNCTION(BlueprintCallable, Category = "Interaction|Narrative")
void Show();
/** 隐藏文本(播放淡出动画) */
UFUNCTION(BlueprintCallable, Category = "Interaction|Narrative")
void Hide();
protected:
/** 叙事文字 TextBlock,蓝图子类必须有一个同名 TextBlock */
UPROPERTY(meta = (BindWidget))
UTextBlock* NarrativeTextBlock;
/** 淡入动画(0.2s),蓝图子类必须有同名 WidgetAnimation */
UPROPERTY(meta = (BindWidgetAnim), Transient)
UWidgetAnimation* FadeInAnim;
/** 淡出动画(0.2s),蓝图子类必须有同名 WidgetAnimation */
UPROPERTY(meta = (BindWidgetAnim), Transient)
UWidgetAnimation* FadeOutAnim;
/** 是否正在显示中 */
bool bIsVisible = false;
virtual void NativeOnInitialized() override;
};