核心概念与架构

Texturge 的核心理念是将文本中的每个**字形(Glyph)**视为独立的可动画实体。通过在运行时对每个字符的变换(位置、缩放、旋转、修剪)、颜色、不透明度、阴影和字间距进行逐帧控制,实现从打字机逐字揭示到复杂逐字动画的全部效果。

模块结构

Texturge 由两个模块组成:

模块类型职责
TexturgeRuntime动画核心、多格式文本解析、Slate 控件、本地化、音效
TexturgeEditorEditor动画蓝图编辑器、设计器视口、Sequencer 集成、编译器

核心数据流

Texturge 的动画管线遵循 蓝图 → 实例 → 动画器 的三阶段流程:

┌─────────────────────────────────────────────────────────────────────┐
│                        编辑时(Editor)                               │
│                                                                     │
│  UTextAnimationBlueprint ──编译──▶ UTextAnimationBlueprintGeneratedClass │
│  (轨道配置 + 关键帧)                (编译后的 GeneratedClass)          │
│                                                                     │
│  UTextAnimation ──Sequencer──▶ FloatChannel 关键帧曲线                │
│  (MovieScene 序列资产)                                               │
└─────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                        运行时(Runtime)                              │
│                                                                     │
│  UTextAnimInstance ──CompileFromAsset()──▶ CompiledTrackData          │
│  (从蓝图编译)                          (逐轨逐帧数据数组)              │
│         │                                                           │
│         ▼                                                           │
│  UTextAnimator ──TickAnimation()──▶ EvaluateTime()                   │
│  (动画管线引擎)                    (实时采样混合所有轨道)               │
│         │                                                           │
│         ▼                                                           │
│  FAnimationFrameData[] ──OnPaint──▶ FTextRun / SAnimatedTextBlock   │
│  (每字符帧数据缓存)               (Slate 层逐字符渲染)                │
└─────────────────────────────────────────────────────────────────────┘

两种使用路径

Texturge 提供两种控件以满足不同的使用场景:

路径控件适用场景
纯文本路径UAnimatedTextBlock单一动画效果,整段文本统一控制。直接指定 TextAnimationBlueprint 资产。
多格式文本路径UAnimatedRichTextBlock多动画混合,通过内联标签对不同文本片段应用不同动画。使用 TextAnimationDataAsset 定义标签→动画映射。

两种路径共享同一套底层管线(UTextAnimatorUTextAnimInstance),区别仅在于输入方式:

  • 纯文本路径:整个文本块使用一个 UTextAnimationBlueprint,生成一个 UTextAnimInstance
  • 多格式文本路径:通过 FTagParser 解析内联标签 → FRenderTreeBuilder 构建渲染树 → 每个动画标签对应独立的 UTextAnimInstance

关键资产类型

资产基类作用
UTextAnimationBlueprintUBlueprint动画蓝图,配置轨道和关键帧,对标 UMG 的 UWidgetBlueprint
UTextAnimationUMovieSceneSequence文本动画序列,存储 MovieScene 时间轴数据
UTextAnimationDataAssetUDataAsset多格式文本动画数据资产,定义标签名 → 动画蓝图的映射表
UTextAnimInstanceUObject动画实例,编译蓝图资产并在运行时求值动画帧数据
UTextAnimatorUObject动画器,打字机动画管线引擎,驱动逐字揭示与帧生成

系统要求

  • 引擎版本:Unreal Engine 5.7 及以上
  • 平台:Windows(Win64)、macOS、Linux
  • 依赖:CommonUI(可选集成)
images/architecture-overview.png — Texturge 架构总览图 — 展示完整数据流:左侧编辑时工具链(动画蓝图编辑器、设计器视口、Sequencer),中间编译与运行时管线(蓝图编译 → AnimInstance → Animator → FrameData),右侧渲染输出(Slate 控件 → 屏幕逐字符动画)