常见问题
安装与设置
插件安装后不显示?
请确认:
- Texturge 文件夹位于项目
Plugins/目录下(非引擎 Plugins 目录) - 已在
Edit > Plugins中搜索 “Texturge” 并确认启用 - 已重启 Unreal Editor
- 引擎版本 ≥ 5.7
如何在 Content Browser 中创建 Texturge 资产?
右键 → Texturge → 文本动画蓝图。若未出现该选项,检查插件是否正确启用。
动画制作
为什么动画不播放?
常见的排查步骤:
- 检查控件的
bAutoPlay是否为true(或手动调用了Play()) - 确认
TextAnimationBlueprint(或AnimationData)已正确赋值 - 确认轨道中至少有一条
bEnabled = true且Duration > 0 - 确认文本非空(
IsAnimating()返回false且文本为空时静默跳过)
动画播放了一帧就结束了?
检查时序模式和持续时间设置:
- 若使用
TotalDuration模式,确认TotalTextDuration值合理(如 2.0 秒而非 0.01 秒) - 若使用
PerCharacterDuration模式,确认Duration值合理(每字符如 0.1 秒) - 检查
CharacterDelayFrames和ApplicationMode设置是否导致所有字符无延迟同时完成
字符揭示了但看不到动画效果?
可能原因:
- 轨道的
BlendMode设为Override导致之前的轨道效果被覆盖 TrackWeight设为 0(轨道不生效)- 关键帧值为默认值(如
Color = White时无染色效果) ApplicationMode设为Random且RandomProbability很低
多格式文本
动画标签内的文本没有动画?
检查 UTextAnimationDataAsset 中的 Entries 数组:
- 确认
TagName与多格式文本中的标签名完全一致(区分大小写) - 确认对应
Type的动画蓝图资产有效且包含至少一条轨道 - 推荐使用
<anim id="TagName">格式(id属性匹配),比裸标签名更可靠
标准多格式文本样式标签不生效?
Texturge 的 FRenderTreeBuilder 对非动画标签保持原样输出。确认:
- 样式集(Style Set)已在
URichTextBlock属性中配置 - 样式标签名与
RichTextStyleSheet数据表中的RowName完全一致(区分大小写) - 文本中动画标签和样式标签未嵌套冲突
装饰器(Decorator)位置错乱?
FRichTextMarshaller 对装饰器使用 FDecoratorProxyRun 确保占位符不影响纯文本索引。若出现位置偏移:
- 确认装饰器类在
URichTextBlock的DecoratorClasses中已注册 - 检查是否在动画标签内部嵌套了装饰器(不建议)
本地化
语言切换后动画错位?
确保在本地化工作流中使用了语义锚点机制:
- 在源语言文本中为动画效果位置定义
FSemanticAnchor - 在
ULocalizationSubsystem::RelocateAnchors()中配置匹配策略 - 若使用 LCS 近似匹配,检查
ContextualSnippet是否足够长(建议每个片段至少 5 个词)以提供足够的上下文
多语言项目如何管理动画?
推荐工作流:
- 每种语言维护独立的
UTextAnimationBlueprint资产(轨道可复用,仅调整文本相关参数) - 使用
ULocalizationSubsystem::OnLanguageChanged事件触发动画资产切换 - 在
UAnimatedTextBlock的OnLanguageChanged回调中更新动画蓝图引用
CJK 文本
中日韩文本逐字揭示不正常?
Texturge 内置了完整的 CJK 字符检测(Texturge::Unicode 命名空间)。若遇到问题:
- 确认文本编码正确(UTF-8/UTF-16)
- 检查
CharBreakIterator是否能正确遍历 Unicode 字符边界 - CJK 字符每个表意字计为一个字符,代理对(emoji 等)正确计为 1
性能
大量字符或高频 Tick 时卡顿?
优化建议:
- 减少同时播放动画的控件数量
- 对于非关键文本,使用
SkipToEnd()直接显示而非逐字揭示 - 降低 CPS(每秒字符数)减少音效队列压力
- 减小
UEventSoundComponent::MaxSoundsPerTick(默认 8) - 动画器内置
MaxAdvanceFramesPerTick = 5防抖保护,确保单 Tick 不会跳动过多帧
多格式文本路径比纯文本路径慢多少?
多格式文本路径额外开销来自:
FTagParser解析(单遍 O(n),极小开销)FRenderTreeBuilder构建(O(n),忽略不计)- 多层
UTextAnimInstance各自编译(主开销来源)
建议:若整段文本使用相同动画效果,优先使用纯文本路径(UAnimatedTextBlock);仅在需要不同文本段应用不同动画时使用多格式文本路径。