文本动画蓝图

文本动画蓝图UTextAnimationBlueprint)是 Texturge 的核心资产类型,对标 UMG 的 UWidgetBlueprint。它用于在蓝图中配置文本动画轨道、关键帧和全局参数,编译后生成 UTextAnimationBlueprintGeneratedClass,运行时通过 UTextAnimInstance 实例化并求值。

资产概述

属性说明
基类UBlueprint
创建方式Content Browser 右键 → Texturge → 文本动画蓝图
文件后缀.uasset(标准 UE 资产)
对标物UWidgetBlueprint(UMG 控件蓝图)

蓝图结构

轨道列表

动画蓝图的核心数据是一组 FTextAnimationTrack 轨道。每条轨道控制 FAnimationFrameData 的一个属性分量(如不透明度、位移 X 等),多条轨道组合形成完整的逐字符动画效果。

更多关于轨道的详细说明,参见 动画轨道与关键帧

文本动画列表

UTextAnimationBlueprint
├── Tracks[]              ← 轨道配置(手动编辑 / Sequencer)
├── TextAnimations[]      ← UTextAnimation 序列资产(Sequencer 编辑)
├── VariableNameToGuidMap ← 变量名 → GUID 映射(对标 UMG)
└── GeneratedClass        ← 编译产物 UTextAnimBlueprintGeneratedClass

TextAnimations 数组存储 UTextAnimation 资产——它们是 UMovieSceneSequence 的子类,包含 MovieScene 时间轴数据。在 Sequencer 中编辑关键帧曲线后,数据存储在这些序列资产中。

VariableNameToGuidMap 对标 UMG 的 WidgetVariableNameToGuidMap,为每个 TextAnimation 维护稳定的 GUID 标识符,跨编译器运行保持不变。

预览文本

UTextAnimInstance 的类默认值(Class Defaults)中可配置预览参数:

属性说明
PreviewText编辑器中预览动画时使用的文本,默认 “Hello Texturge”
PreviewWidth / PreviewHeight预览容器的尺寸限制
PreviewColorAndOpacity预览文本颜色
PreviewFont预览字体资产
PreviewLetterSpacing预览字间距
PreviewFontMaterial预览字体材质(自定义渲染效果)
PreviewJustification文本对齐方式
bPreviewAutoWrapText是否自动换行
PreviewLineHeightPercentage行高百分比

蓝图可重写事件

UTextAnimInstance 提供以下蓝图可重写事件:

事件说明
OnSelectDefaultAnimation()重写以选择要导出的默认动画。返回 None 时回退到 TextAnimations[0]

编译流程

// 编译动画蓝图 → 生成 UTextAnimInstance
UTextAnimationBlueprint* Blueprint = ...;
UTextAnimInstance* Instance = Blueprint->CreateAnimInstance();

// 从蓝图资产编译动画数据
Instance->CompileFromAsset(Blueprint, CharacterCount);

编译过程:

  1. 从 Tracks 数组或 TextAnimations 的 MovieScene FloatChannel 提取轨道数据
  2. 按 StartTime 排序所有轨道
  3. 遍历每条轨道,通过关键帧插值生成逐帧数据
  4. 根据字符应用模式(PerCharacter / Interval / Random)过滤帧数据
  5. 将编译结果存储到 CompiledTrackData(逐轨逐帧数据数组)

编译产物

UTextAnimInstance
├── CompiledTrackData[]    ← 每条轨道一个 FCompiledTrackFrames
├── TrackFrameCounts[]     ← 每条轨道的帧数
├── CompiledTrackIndices[] ← 按 StartTime 排序的轨道索引
├── EffectiveFrameRate     ← 生效帧率(默认 30fps)
├── TotalDuration          ← 总时长(秒)
└── CachedInputFingerprint ← 输入指纹(检测重编译需求)

FCompiledTrackFrames 是单个轨道的编译结果,包含扁平排列的 FAnimationFrameData[] 数组:[帧0-字符0, 帧0-字符1, ..., 帧1-字符0, ...]

总时长计算

GetTotalDuration() 计算所有轨道中 (StartTime + Duration) 的最大值。在 PerCharacterDuration 时序模式下,每字符时长 Duration 固定,总时长随字符数线性增长。

images/animation-blueprint-editor.png — Texturge 动画蓝图编辑器主窗口四面板布局:设计器预览视口(显示 "Hello Texturge")、轨道列表、Sequencer 时间轴、详情面板