Sequencer 集成
Texturge 深度集成了 UE5 的 Sequencer 框架,允许使用 MovieScene 时间轴和 FloatChannel 关键帧曲线来编辑文本动画,并在 Level Sequencer 中与过场动画同步。
架构原理
UTextAnimation
UMovieSceneSequence
└── UTextAnimation ← Texturge 文本动画序列
├── MovieScene ← 标准 UMovieScene(含轨道)
└── DisplayLabel ← 编辑器显示名称
UTextAnimation 是 UMovieSceneSequence 的子类,对标 UWidgetAnimation。它包含 UMovieScene 实例,通过 Sequencer 编辑器进行关键帧编辑。
关键特性:
- 线程安全的后加载(
IsPostLoadThreadSafe() = true) - 不支持 Possessable 对象绑定(纯属性动画)
IsTrackSupportedImpl()过滤只支持 Texturge 自定义轨道
MovieScene 轨道
MovieSceneTextAnimationTrack ← Sequencer 主轨道
└── MovieSceneTextAnimationSection ← 轨道 Section
└── FloatChannel[] ← 每条属性轨道的 FloatChannel
MovieSceneTextAnimationTrack 和 MovieSceneTextAnimationSection 将 10 条轨道类型的 FloatChannel 数据映射回 FTextAnimationTrack 结构,供 UTextAnimInstance::BuildTracksFromTextAnimation() 提取。
Sequencer 编辑工作流
在动画蓝图编辑器中
- 打开
UTextAnimationBlueprint资产 → 自动启动 Texturge 动画蓝图编辑器 - 在 Sequencer 面板中创建
UTextAnimation序列 - 通过 “添加轨道” 按钮选择轨道类型(不透明度、平移、缩放等 10 种)
- 在 FloatChannel 曲线上添加和编辑关键帧
- 拖动播放头在设计器视口中实时预览动画效果
编辑器预览机制
Sequencer 时间变更时,编辑器通过以下流程驱动设计器预览:
Sequencer::OnGlobalTimeChanged()
│
▼
FTextAnimationBlueprintEditor::OnSequencerGlobalTimeChanged()
│
▼
UTextAnimInstance::EvaluateTime(ScrubPosition)
│
▼
TArray<FAnimationFrameData> FrameData
│
▼
STextAnimationDesignerView::SetPreviewFrameDataOverride(FrameData)
│
▼
UTextAnimator::SetPreviewFrameDataOverride(FrameData)
│
▼
SAnimatedTextBlock::OnPaint() 查询 HasPreviewFrameData() → 使用注入帧数据
防重入标志 bUpdatingPreview 防止 OnSequencerGlobalTimeChanged 递归调用。
在 Level Sequencer 中使用
Texturge 的 TrackEditor(FTextAnimationTrackEditor)可以将文本动画轨道添加到 Level Sequencer 中,实现文本动画与关卡过场的同步播放。
CineCamera 与文本动画同步示例
LevelSequencer
├── CineCameraActor Track
│ └── Transform Section ← 摄影机运动
├── TextAnimation Track
│ └── TextAnimation Section ← 文本动画(与摄影机同步)
│ ├── Opacity Channel ← 淡入曲线
│ └── Translation Channel ← 弹入曲线