Frequently Asked Questions
Installation & Setup
The plugin doesn’t appear after installation?
Check the following:
- The Texturge folder is in your project’s
Plugins/directory (not the engine Plugins directory) - The plugin is enabled under
Edit > Plugins(search for “Texturge”) - You’ve restarted Unreal Editor
- Your engine version is ≥ 5.7
How do I create a Texturge asset in the Content Browser?
Right-click → Texturge → Text Animation Blueprint. If this option doesn’t appear, verify the plugin is properly enabled.
Animation Authoring
Why isn’t my animation playing?
Common troubleshooting steps:
- Check that
bAutoPlayistrue(orPlay()was manually called) - Confirm
TextAnimationBlueprint(orAnimationData) is properly assigned - Confirm at least one track has
bEnabled = trueandDuration > 0 - Confirm the text is non-empty (
IsAnimating()silently returnsfalsewhen text is empty)
The animation finished in a single frame?
Check timing mode and duration settings:
- If using
TotalDurationmode, confirmTotalTextDurationhas a reasonable value (e.g., 2.0 seconds, not 0.01) - If using
PerCharacterDurationmode, confirmDurationis reasonable (e.g., 0.1 seconds per character) - Check whether
CharacterDelayFramesandApplicationModesettings cause all characters to complete simultaneously
Characters are revealed but I don’t see any animation effect?
Possible causes:
BlendModeset toOverride, covering previous track effectsTrackWeightset to 0 (track not taking effect)- Keyframe value is the default (e.g.,
Color = Whiteproduces no visible tint) ApplicationModeset toRandomwith a very lowRandomProbability
Rich Text
Text inside animation tags has no animation?
Check the Entries array in UTextAnimationDataAsset:
- Confirm
TagNamematches the tag name in the rich text exactly (case-sensitive) - Confirm the corresponding
Typeanimation blueprint asset is valid and contains at least one track - The
<anim id="TagName">format (id attribute matching) is recommended over bare tag names
Standard rich text style tags aren’t working?
Texturge’s FRenderTreeBuilder passes non-animation tags through as-is. Confirm:
- A Style Set is configured in the
URichTextBlockproperties - Style tag names match the
RowNamein theRichTextStyleSheetdata table exactly (case-sensitive) - Animation tags and style tags are not nested in conflicting ways
Decorator position is off?
FRichTextMarshaller uses FDecoratorProxyRun for decorators to prevent plain text index disruption. If positions are offset:
- Confirm the decorator class is registered in
URichTextBlock’sDecoratorClasses - Check if decorators are nested inside animation tags (not recommended)
Localization
Animation position is wrong after language switch?
Ensure you’re using the semantic anchor mechanism in your localization workflow:
- Define
FSemanticAnchorfor animation effect positions in the source language text - Configure matching strategy in
ULocalizationSubsystem::RelocateAnchors() - If using LCS approximate matching, check that
ContextualSnippetis long enough (at least 5 words recommended) to provide sufficient context
How should I manage animations for multilingual projects?
Recommended workflow:
- Maintain a separate
UTextAnimationBlueprintper language (tracks can be reused, only adjust text-related parameters) - Use the
ULocalizationSubsystem::OnLanguageChangedevent to trigger animation asset switching - Update the animation blueprint reference in
UAnimatedTextBlock’sOnLanguageChangedcallback
CJK Text
CJK text reveal doesn’t work correctly?
Texturge includes comprehensive CJK character detection (Texturge::Unicode namespace). If you encounter issues:
- Confirm text encoding is correct (UTF-8/UTF-16)
- Check that
CharBreakIteratoris correctly traversing Unicode character boundaries - CJK characters count as 1 per ideograph; surrogate pairs (e.g., emoji) count correctly as 1
Performance
Lag with many characters or high-frequency Ticks?
Optimization suggestions:
- Reduce the number of simultaneously animating widgets
- Use
SkipToEnd()for non-critical text to display instantly rather than character-by-character - Lower CPS (characters per second) to reduce sound queue pressure
- Reduce
UEventSoundComponent::MaxSoundsPerTick(default 8) - The animator’s built-in
MaxAdvanceFramesPerTick = 5debounce protection ensures a single Tick can’t skip too many frames
How much slower is the rich text path vs. the plain text path?
The rich text path adds overhead from:
FTagParserparsing (single-pass O(n), negligible)FRenderTreeBuilderconstruction (O(n), negligible)- Multiple
UTextAnimInstancecompilations, one per layer (primary overhead)
Recommendation: If the entire text block uses the same animation effect, prefer the plain text path (UAnimatedTextBlock); use the rich text path only when different text segments need different animations.