Sequencer 集成

Texturge 深度集成了 UE5 的 Sequencer 框架,允许使用 MovieScene 时间轴和 FloatChannel 关键帧曲线来编辑文本动画,并在 Level Sequencer 中与过场动画同步。

架构原理

UTextAnimation

UMovieSceneSequence
    └── UTextAnimation           ← Texturge 文本动画序列
         ├── MovieScene           ← 标准 UMovieScene(含轨道)
         └── DisplayLabel         ← 编辑器显示名称

UTextAnimationUMovieSceneSequence 的子类,对标 UWidgetAnimation。它包含 UMovieScene 实例,通过 Sequencer 编辑器进行关键帧编辑。

关键特性:

  • 线程安全的后加载(IsPostLoadThreadSafe() = true
  • 不支持 Possessable 对象绑定(纯属性动画)
  • IsTrackSupportedImpl() 过滤只支持 Texturge 自定义轨道

MovieScene 轨道

MovieSceneTextAnimationTrack    ← Sequencer 主轨道
    └── MovieSceneTextAnimationSection  ← 轨道 Section
          └── FloatChannel[]            ← 每条属性轨道的 FloatChannel

MovieSceneTextAnimationTrackMovieSceneTextAnimationSection 将 10 条轨道类型的 FloatChannel 数据映射回 FTextAnimationTrack 结构,供 UTextAnimInstance::BuildTracksFromTextAnimation() 提取。

Sequencer 编辑工作流

在动画蓝图编辑器中

  1. 打开 UTextAnimationBlueprint 资产 → 自动启动 Texturge 动画蓝图编辑器
  2. 在 Sequencer 面板中创建 UTextAnimation 序列
  3. 通过 “添加轨道” 按钮选择轨道类型(不透明度、平移、缩放等 10 种)
  4. 在 FloatChannel 曲线上添加和编辑关键帧
  5. 拖动播放头在设计器视口中实时预览动画效果

编辑器预览机制

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  ← 弹入曲线
images/sequencer-text-animation.png — Sequencer 面板:TextAnimation 主轨道展开 Opacity/Translation/Scale 子轨道,FloatChannel 贝塞尔淡入曲线
images/level-sequencer-integration.png — Level Sequencer 整体界面:CineCameraActor 轨道 + Texturge TextAnimation 轨道同步播放