编辑器工具
编辑器模块(TexturgeEditor)为动画创作提供完整的 WYSIWYG 环境:双击 UTextAnimationBlueprint 资产打开自定义蓝图编辑器,内含设计器视口、动画列表、Sequencer 时间轴与预览控制。
FTextAnimationBlueprintEditor
核心动画蓝图编辑器,继承 FBlueprintEditor(Kismet 基础框架)。
class TEXTURGEEDITOR_API FTextAnimationBlueprintEditor : public FBlueprintEditor
{
void InitTextAnimationEditor(const EToolkitMode::Type Mode,
const TSharedPtr<IToolkitHost>& InitToolkitHost,
UTextAnimationBlueprint* InBlueprint);
void Compile();
TSharedPtr<ISequencer>& GetSequencer();
void ChangeViewedAnimation(UGlyphAnimation& InAnimation);
UGlyphAnimation* GetCurrentAnimation() const;
UGlyphAnimation* RefreshCurrentAnimation();
void SetActivePreviewSource(ETexturgePreviewSource NewSource);
FPreviewSourceMediator* GetPreviewSourceMediator() const;
UTexturgePreviewSceneConfig* GetPreviewSceneConfig() const;
UTextAnimInstance* GetPreviewAnimInstance() const;
float GetScrubPosition() const;
void SetScrubPosition(float InTime);
int32 AddTrack();
int32 AddTrack(ETextAnimationTrackType InType);
void RemoveTrack(int32 InTrackIndex);
const TArray<FTextAnimationTrack>& GetTracks() const;
static TSharedPtr<FTextAnimationBlueprintEditor> GetActiveEditor();
};
双模式布局
编辑器基于 FWorkflowCentricApplication 注册两个应用模式(FTextAnimBPEditorModes):
| 模式 | FName | 用途 |
|---|---|---|
| Designer 模式 | TextAnimBP_DesignerMode | 设计器视口 + 动画列表 + Sequencer 时间轴 + 预览 |
| Graph 模式 | TextAnimBP_GraphMode | 标准 Kismet 蓝图图表编辑(BuildDefaultAnimation 事件图) |
七标签页
编辑器窗口通过 7 个静态 TabId 注册标签页:
| TabId | 标签页 | 说明 |
|---|---|---|
AnimationDesignerTabId | 设计器 | STextAnimationDesignerView 字形设计视口 |
TrackListTabId | 轨道列表 | 旧版轨道列表(兼容) |
TimelineTabId | 时间轴 | Sequencer 集成(UGlyphAnimation 关键帧编辑) |
DetailsTabId | 详情 | 蓝图详情面板 |
PreviewSettingsTabId | 预览设置 | FPreviewSettingsTabFactory 提供的预览参数面板(Designer/Graph 两模式复用) |
PreviewAnimationListTabId | 动画列表 | STextAnimationPreviewList 预览动画列表 |
PreviewViewportTabId | 预览视口 | 预览文本动画控件 |
工作流
- 双击文本动画蓝图(
UTextAnimationBlueprint)资产打开编辑器(UTextAnimationBlueprintFactory负责创建) - 在 动画列表 标签页添加 / 管理字形动画(
UGlyphAnimation)资产 - 在 时间轴 Sequencer 视图中编辑关键帧曲线(21 通道)
- 在 Graph 模式 下覆盖
BuildDefaultAnimation事件,使用UGlyphAnimationLayer/UGlyphAnimationFactory节点编排动画 - 在 预览设置 中配置预览文本(默认
"Hello Texturge")与字体 - 点击 编译(Compile)触发编译:
FTextAnimationBlueprintCompilerContext→ 生成UTextAnimationBlueprintGeneratedClass - 编译后
InvalidateBakeCache+ 预览源切换(None → GlyphAnimation)自动重新烘焙
STextAnimationDesignerView
WYSIWYG 字形设计器视口,继承 STextAnimationDesignSurface、FGCObject 与 IUMGDesigner 接口。
class STextAnimationDesignerView : public STextAnimationDesignSurface, public FGCObject, public IUMGDesigner
{
void SetPreviewFrameDataOverride(const TArray<FGlyphAnimationState>& InFrameData);
void ClearPreviewFrameDataOverride();
void SetPreviewAnimationList(TSharedPtr<STextAnimationPreviewList> InList);
void SetAnimationList(TSharedPtr<STextAnimationList> InList);
// IUMGDesigner 接口
float GetPreviewScale() const;
FGeometry GetDesignerGeometry() const;
// 预览尺寸
FOptionalSize GetPreviewAreaWidth() const;
void SetPreviewAreaSize(int32 Width, int32 Height);
float GetPreviewDPIScale() const;
};
| 特性 | 说明 |
|---|---|
| 缩放与平移 | 滚轮缩放(约 31 级)、右键/中键拖动平移、缩放至适应 |
| 网格 | 可配置间距的设计网格与吸附 |
| 标尺 | 水平/垂直标尺(STextAnimationRuler),带光标指示线与字体度量菜单 |
| 字体度量 | Baseline / LineBounds / ClusterBounds / GlyphBounds 四类度量叠加(FontMetric_* 标志位) |
| 预览帧覆盖 | SetPreviewFrameDataOverride 注入烘焙帧数据,OnPaint 使用覆盖数据渲染 |
| 效果层 | STextAnimationPaintSurface 绘制选择框 / 悬停高亮 |
Slate 组成(私有实现,复制自引擎 SDesignSurface 体系并适配):
STextAnimationDesignSurface— 设计画布基类(缩放/平移/网格渲染)STextAnimationPaintSurface— 委托绘制层(选择框、悬停高亮)STextAnimationDesignerToolBar— 工具栏(缩放、网格、吸附、字体度量、ZoomToFit)STextAnimationRuler— 标尺STextAnimationDisappearingBar— 拖拽渐隐消息栏STextAnimationPreviewWidget/STextAnimationPreviewList/STextAnimationList— 预览控件与列表
预览系统
ETexturgePreviewSource
enum class ETexturgePreviewSource : uint8
{
None, // 无预览 — 显示静止文本(恒等状态)
StagePreview, // 独立时钟循环播放入场/默认/出场阶段
GlyphAnimation // Sequencer 播放头驱动的字形动画预览
};
FPreviewSourceMediator
预览源仲裁器,管理三种预览模式与烘焙缓存。
| 方法 | 说明 |
|---|---|
RequestSource(ETexturgePreviewSource, EAnimationStage = None, UGlyphAnimation* = nullptr) | 请求切换预览源 |
RegisterObserver / UnregisterObserver | 预览源变更观察者(FOnPreviewSourceChanged 四参委托) |
GetActiveSource() / GetSelectedStage() / GetCurrentAnimation() | 状态查询 |
IsStagePreviewActive() / IsGlyphAnimationActive() | 快捷判断 |
GetBakeCache() / InvalidateBakeCache() / InvalidateBakeStageCache() | 烘焙缓存管理 |
SetActiveOverrides(...) / SetActiveVectorOverrides / SetActiveColorOverrides / SetActiveVector2DOverrides | 预览参数覆盖注入 |
TickPreview(View, Config, BP, Sequencer) | 每帧推进预览(缓存命中 / 未命中检查 → 烘焙 → 求值 → 渲染) |
缓存机制:FTexturgePreviewBakeCache 分别缓存 BakeAllStages(StagePreview 用)与 BakeStageWithCurves(GlyphAnimation 用)的结果,以 TextFingerprint + BlueprintFingerprint 为键。
UTexturgePreviewSceneConfig
预览场景配置(持久化到 EditorPerProjectUserSettings),设计器视口的全部预览参数:
| 分组 | 字段(节选) | 默认值 |
|---|---|---|
| 预览文本 | PreviewText | "Hello Texturge" |
| 预览视口 | PreviewWidth / PreviewHeight / bPreviewSizeToContent | 500 / 200 / false |
| 颜色与外观 | PreviewColorAndOpacity / PreviewMinDesiredWidth | White / 0 |
| 字体 | PreviewFont / PreviewLetterSpacing / PreviewFontMaterial | — / 0 / — |
| 轮廓 | PreviewOutlineSize / PreviewOutlineColor | 0 / Transparent |
| 阴影 | PreviewShadowOffset / PreviewShadowColorAndOpacity | Zero / Transparent |
| 对齐与变换 | PreviewTextTransformPolicy / PreviewJustification | None / Left |
| 换行 | bPreviewAutoWrapText / PreviewWrapTextAt / PreviewWrappingPolicy | false / 0 / DefaultWrapping |
| 行高与边距 | PreviewLineHeightPercentage / PreviewMargin | 1.0 / — |
| 渲染 | PreviewClipping / bPreviewPixelSnapping / PreviewRenderOpacity / PreviewStrikeBrush | Inherit / true / 1.0 / — |
| 溢出与流方向 | PreviewFlowDirection / PreviewTextOverflowPolicy | Inherit / Clip |
Sequencer 集成
FGlyphAnimationTrackEditor(私有类)扩展 FMovieSceneTrackEditor,将 UGlyphAnimation 内部的 UMovieSceneGlyphAnimationTrack 注册到 Sequencer:
- 每个轨道包含多个
UMovieSceneGlyphAnimationSection(子轨道),每个 Section 对应一条类型化子轨道(FTextAnimationSubTrackData) - 子轨道按轨道类型映射 1~4 条
FMovieSceneFloatChannel(Float→1、Vector2D→2、Color→4) - 支持标准关键帧操作(添加/删除/移动/插值曲线调节)与多行显示(
SupportsMultipleRows) OnSubTrackAddedToSequencer(ETextAnimationTrackType)静态回调将新子轨道同步回蓝图
工具栏与命令
FTexturgeEditorCommands 注册编辑器命令:
| 命令 | 说明 |
|---|---|
OpenPreviewWindow | 打开预览窗口 |
ToggleDashedOutline | 切换虚线轮廓显示 |
ToggleGridSnap | 切换网格吸附 |
ToggleFontMetrics | 切换字体度量叠加 |
ZoomToFit | 缩放至适应 |