Sequencer

自动关联目录:Sequencer

覆盖说明:官方文档把 Sequencer 归在 Animating Characters and Objects 大类下(该大类已核实的 4 个子分类之一)。本篇覆盖它在游戏项目中的实际用途与代价,不覆盖影视/广播向的完整用法(那属于 Motion Design,按覆盖规则明确不纳入)。

1. 定位

Sequencer 是 UE 的多轨编辑器:可创建与编辑游戏过场动画或影视内容,并能配合 Control Rig 同时动画化角色、对象、摄像机与特效。

一句话定位:Sequencer 是"时间轴编排器"——把角色动画、相机、特效、音频、关卡可见性放在同一条时间轴上统一控制。

它和 AnimBP 的分工:

AnimBPSequencer
驱动方式运行时状态驱动时间轴驱动
内容循环/响应式的动画逻辑一段编排好的、可回放的演出
典型走路、跑步、待机过场动画、QTE、剧情演出

2. 结构

Sequence(资产)
 ├── Master Track(时间轴)
 ├── Actor Binding(绑定到场景/动态生成的 Actor)
 │      ├── Animation Track(播放 AnimSequence / Montage)
 │      ├── Transform Track
 │      └── Control Rig Track
 ├── Camera Cut Track(镜头切换)
 ├── 事件 Track(触发蓝图事件)
 ├── 音频 Track
 └── 特效 / 可见性 / 材质参数 Track
概念说明
Binding把轨道绑到某个 Actor;可通过 Sequence Actor 或标签绑定
Camera Cut镜头切换轨道,控制用哪台相机
Section可循环/分段
Shot大序列里嵌套子序列
事件 Track在指定帧触发蓝图/关卡事件

3. 游戏内的典型用法

用途做法
过场动画播放 Sequence,期间锁输入、隐藏 HUD
QTE / 处决演出播放 Sequence + 事件 Track 触发判定
开场/结算演出相机运镜 + 角色站位
剧情对话配合音频与字幕 Track
// 播放
ALevelSequenceActor* OutActor;
FMovieSceneSequencePlaybackSettings Settings;
ULevelSequencePlayer* Player = ULevelSequencePlayer::CreateLevelSequencePlayer(
    GetWorld(), Sequence, Settings, OutActor);
Player->Play();
要点说明
播完回调Player->OnFinished
暂停/继续Player->Pause() / Play()
跳到某帧Player->SetPlaybackPosition()
是否锁输入过场期间要自己处理

4. 与 Control Rig 的关系

官方明确:Sequencer 可配合 Control Rig 同时动画化角色、对象、摄像机和特效,Control Rig 的动画可以输出到 Sequencer 播放或烘焙成独立资源。

组合用途
Sequencer + Control Rig Track影视级的角色姿态控制
烘焙成 AnimSequence把 Control Rig 的动画变成运行时可播的普通动画
空间切换(Space Switching)在过场里切换控制的参考空间

实战建议:过场里用 Control Rig 做精细调整没问题,但最终交付应尽量烘焙成 AnimSequence——运行时跑 Control Rig 的成本远高于播一段动画。

5. 代价与权衡

设计收益代价什么时候不该用
Sequencer 做过场可视化编排,美术可直接调序列资产与场景强耦合简单的"播个动画"用 Montage 就够
嵌套 Shot长过场可拆分结构复杂短过场不必拆
Control Rig Track精细控制运行时解算成本高应烘焙成 AnimSequence
事件 Track 触发判定时间点与演出严格对齐判定逻辑分散在序列里关键判定仍应走服务端
动态 Binding可对运行时生成的角色播绑定逻辑易碎固定演员用直接绑定

6. 踩坑与排查

坑现象怎么验证
过场里玩家还能操作没锁输入播 Sequence 期间自己禁用输入
HUD 没隐藏过场穿帮播/停时切换 UI 显隐
序列在打包后不播引用的 Actor 是编辑器对象用动态 Binding 或保证 Actor 存在
Camera Cut 不生效没设 Camera Cut Track 或被组件覆盖检查相机优先级
播完没回到游戏没接 OnFinished播完的收尾逻辑要写
运行时跑 Control Rig 卡解算成本烘焙成 AnimSequence
判定写在事件 Track 里客户端可改时序权威判定仍走服务端(见 Security)
序列与关卡强耦合复用困难抽象成可复用的 Shot
跳过过场逻辑缺失玩家想跳过却不能应提供 Skip 并正确收尾

7. 排查顺序

1. 不播?→ 序列资产是否正确、Actor Binding 是否存在
2. 播了但没镜头?→ Camera Cut Track 与相机优先级
3. 播完没恢复?→ OnFinished 是否处理
4. 卡?→ 是否运行时跑 Control Rig(应烘焙)
5. 打包后异常?→ 是否依赖编辑器对象

参考