文本动画蓝图
文本动画蓝图(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);
编译过程:
- 从 Tracks 数组或 TextAnimations 的 MovieScene FloatChannel 提取轨道数据
- 按 StartTime 排序所有轨道
- 遍历每条轨道,通过关键帧插值生成逐帧数据
- 根据字符应用模式(PerCharacter / Interval / Random)过滤帧数据
- 将编译结果存储到
CompiledTrackData(逐轨逐帧数据数组)
编译产物
UTextAnimInstance
├── CompiledTrackData[] ← 每条轨道一个 FCompiledTrackFrames
├── TrackFrameCounts[] ← 每条轨道的帧数
├── CompiledTrackIndices[] ← 按 StartTime 排序的轨道索引
├── EffectiveFrameRate ← 生效帧率(默认 30fps)
├── TotalDuration ← 总时长(秒)
└── CachedInputFingerprint ← 输入指纹(检测重编译需求)
FCompiledTrackFrames 是单个轨道的编译结果,包含扁平排列的 FAnimationFrameData[] 数组:[帧0-字符0, 帧0-字符1, ..., 帧1-字符0, ...]。
总时长计算
GetTotalDuration() 计算所有轨道中 (StartTime + Duration) 的最大值。在 PerCharacterDuration 时序模式下,每字符时长 Duration 固定,总时长随字符数线性增长。