Animate TextMeshPro and UI Toolkit text one character or one word at a time with simple rich text tags. Text animation, typewriter reveal and animated text effects (wave, shake, bounce, fade, rainbow) with simple rich text tags. Build custom effects in the JuiceBox graph editor.
Tags that stay out of your way
- A tag is just a sequence name, and case doesn't matter.
- TextMeshPro's own tags (<b>, <color>, <size> and the rest) pass straight through. Anything that isn't an effect name is left alone.
- Different tags overlap freely and stack sensibly: offsets and rotations add, scale and opacity multiply, colour replaces. Two effects on the same axis, such as wave and bounce, add through a combiner instead of fighting.
- Two spans of the same tag share one ripple across the line.
- Spaces are skipped, so a ripple steps from letter to letter without pausing on the gaps.
Tune it, or build your own: Open the effect profile in the JuiceBox Sequence Editor and every effect plays across a sample text in a preview stage, ripple and all. Adjust amplitude, speed, duration, easing and shake settings. Set the stagger between letters (a negative value runs the ripple backwards), or turn on Prewarm so a wave is fully formed from the first frame. To make a new effect, add a sequence, point it at a character property (offset, rotation, hanging rotation, scale, colour or opacity) and use its name as a tag. Point the preview at your own prefab to author on your own font.
Built for real projects
- Works on both UI and world-space TextMeshPro text.
- Set the text from code with one property, or keep writing to TextMeshPro directly: localisation systems and existing scripts keep working, and their tags are picked up automatically.
- Assigning the text it already shows does nothing, so it is safe to set every frame from a data binding. Effects keep playing instead of restarting.
- All of a text's running effects come back as one handle: pause, resume, restart, change the timescale or stop every letter at once. Slow motion and replaying a fade when a dialogue box reopens are one line each.
- Looping effects run until you stop them, or give them a duration and they finish their cycle and settle instead of stopping dead.
- Writes straight into the text mesh at runtime.This doesn't just allow you to animate text, it uses JuiceBox's animation system to let you customize any animation in the graph editor.