动画蓝图编辑器

Texturge 提供完整的可视化编辑环境——文本动画蓝图编辑器FTextAnimationBlueprintEditor),对标 UMG 的 Widget Blueprint Editor,专为文本动画资产设计。

编辑器架构

FBlueprintEditor (引擎基类)
    └── FTextAnimationBlueprintEditor (Texturge 编辑器)
         ├── TextAnimBPDesignerMode ← 设计器模式(默认打开)
         └── TextAnimBPGraphMode    ← 蓝图图表模式(事件图)

编辑器继承 FBlueprintEditor,复用蓝图编辑框架的全部能力(事件图、编译、调试、菜单/工具栏),同时添加文本动画专属功能。

四面板布局

双击 UTextAnimationBlueprint 资产打开编辑器,默认进入设计器模式:

┌────────────────────────────────────────────────────────────┐
│  工具栏(编译、播放、缩放等)                                │
├──────────────────────┬──────────────────┬──────────────────┤
│                      │                  │                  │
│   ① 设计器视口        │   ③ 时间轴        │   ④ 详情面板      │
│   (预览文本动画       │   (Sequencer      │   (选中轨道       │
│    实时渲染效果)       │    关键帧编辑)     │    属性编辑)      │
│                      │                  │                  │
│   ② 轨道列表          │                  │                  │
│   (添加/删除/排序      │                  │                  │
│    动画轨道)          │                  │                  │
│                      │                  │                  │
├──────────────────────┴──────────────────┴──────────────────┤
│  状态栏(帧数、字符数、光标位置等)                           │
└────────────────────────────────────────────────────────────┘

设计器视口

对标 UMG SDesignerView,为文本动画提供可视化布局和预览环境:

功能说明
实时预览播放头位置对应的文本动画效果
缩放平移鼠标滚轮缩放、右键拖拽平移
网格对齐Snapping grid 辅助布局对齐
分辨率预览多屏幕分辨率/宽高比预览
字体度量基线、字形边界、行边界可视化覆盖
标尺顶部和左侧标尺栏
安全区自定义安全区显示

设计器表面STextAnimationDesignSurface)是预览画布,通过 STextAnimationPaintSurface(Effects Layer)叠加选择框、hover 外框和字体度量覆盖线。

信息栏叠加层:设计器底部显示当前分辨率、DPI 缩放、光标位置、字符数、帧数等信息。

轨道列表

管理 FTextAnimationTrack 数组的面板:

  • 添加轨道:从 10 种轨道类型中选择(Opacity、Translation、Scale 等)
  • 删除轨道:选中后删除
  • 排序:通过拖拽或属性调整 StartTime 控制轨道执行顺序
  • 启用/禁用:通过 bEnabled 开关临时禁用轨道

时间轴

内嵌 UE5 Sequencer 编辑器,提供关键帧曲线编辑:

  • FloatChannel 曲线编辑(不透明度、字间距、旋转)
  • Vector2DChannel 曲线编辑(平移、缩放、修剪等)
  • ColorChannel 曲线编辑(染色、阴影染色)
  • 标准 Sequencer 操作:添加/删除关键帧、调整时间、缩放视图、播放/暂停预览

多动画支持:编辑器维护 TextAnimations[] 数组,每个动画元素对应一个独立的 Sequencer 编辑器标签页。通过动画面板(SAnimationList)切换当前编辑的动画。

详情面板

显示选中对象的属性编辑器:

  • 选中轨道 → 显示 FTextAnimationTrack 全部属性(轨道类型、时间、混合模式、关键帧数组等)
  • 选中关键帧 → 显示 FKeyFrame 属性(时间、值、插值类型)
  • 通过 UTextAnimationTrackProxy 代理对象实现 FTextAnimationTrack 结构体在 Details 面板中的可编辑性

面板间数据互通

编辑器使用委托系统实现四个面板间的实时数据同步:

委托触发方接收方说明
OnPreviewTextChanged详情面板(PreviewText 变更)设计器视口更新预览文本内容
OnTracksChanged轨道列表(增删轨道)时间轴、详情面板刷新轨道数据
OnTrackSelected轨道列表(选中轨道)详情面板显示选中轨道属性
OnTextAnimationsUpdated动画面板(增删动画)时间轴刷新 Sequencer 标签页
OnSelectedAnimationChanged动画面板(切换动画)设计器视口、时间轴切换预览和曲线

编译

点击工具栏的 Compile 按钮触发编译流程:

  1. FTextAnimationBlueprintCompilerContext(Kismet 编译器上下文扩展)执行蓝图编译
  2. 生成 UTextAnimationBlueprintGeneratedClass
  3. SafeRecreatePreviewAnimInstance() 从新 GeneratedClass 创建预览 AnimInstance
  4. 设计器视口使用新的预览实例刷新渲染

编译期间 bPendingRecreate 标志暂存重建请求。若在 OnSequencerGlobalTimeChanged 执行期间触发编译,延迟到预览更新结束后执行,确保不破坏正在进行的帧数据注入。

编辑器命令

FTextDesignerCommands 注册以下编辑器命令:

命令快捷键说明
切换轮廓显示显示/隐藏控件虚线轮廓
缩放至适应将预览缩放至适应视口
切换宽高比在横向和纵向之间切换
切换安全区翻转安全区类型

编辑器命令通过 FUICommandList 绑定,与 UMG Designer 的命令体系兼容。

images/editor-panoramic.png — Texturge 动画蓝图编辑器全景截图:四面板布局,预览文本 "Hello Texturge" 弹入动画,Sequencer 中 Opacity/Translation 轨道曲线
images/track-list-panel.png — 轨道列表面板:+ 添加按钮展开 10 种轨道类型下拉菜单,3 条轨道(Opacity/Translation/Color)含启用勾选框和删除按钮