Diagnose Problems
Start with Health Check
Open Tools > Text Studio > Health Check. Resolve missing TMP setup, duplicate event systems, unavailable renderers, invalid effect tags, and profile ownership before tuning visuals.
If the source and preview disagree
- Confirm whether Raw or Live is selected.
- Check profile ownership and local override mode.
- Verify markup delimiters and closing tags.
- Use Debug to inspect resolved text, visible glyphs, effect bindings, and waits.
- Check renderer compatibility when a composed effect was authored for another space.
If an effect is too strong
Reduce amplitude, rotation, travel, flash frequency, or spatial radius before changing the content. Test Full, Reduced, and No Motion. Judge the smallest text size and busiest background used by the game.
Troubleshooting by symptom
Tags appear as text
Check the authoring profile, delimiters, spelling, and whether the tag belongs to the current catalog. Unknown Text Animator braces intentionally remain literal. Use the tag browser and Debug parsed-occurrence list to distinguish an unknown tag from a renderer passthrough tag.
Reveal does not start
Check the Typewriter settings source, reveal mode, start behavior, current pause depth, active action waits, external progress, and whether the line was set through Text Studio. GetRevealDebugSnapshot reports progress, glyph count, active actions, and current state.
Continue skips two lines
Bind the button to AdvanceOrSkip and request the next line only when it returns true. Do not call SkipReveal and advance the narrative system from the same first press.
The effect works in one renderer only
Inspect the effect's declared render domain and channels. Transform, color, and alpha are broadly portable. Material, UV, surface-mask, topology, or 3D channels need a renderer that explicitly supports them.
Localized or RTL text breaks a range
Keep tags around semantic phrases in every localized entry. Validate final shaping and fallback fonts with the actual backend. Do not derive effect ranges from fixed source character offsets when the language or shaping process can change glyph count or visual order.
Performance changes after live updates
Use SetTextDeferred for values replaced several times before a frame. Keep shared profiles and catalogs stable. Avoid repeated registration, source scanning, or allocation-heavy glyph callbacks. Measure a representative line with the real renderer, effects, placement, language, and update frequency.