Skip to content

Writing Effects Into Text

Tags and parameters

Wrap only the words that should be affected. Named parameters are easiest to review later; short aliases are useful when the line is already busy.

<wave amplitude=.18 speed=1.4>moving</wave>

<colorPulse from=#ff3355 to=#ffffff speed=1.7>critical</colorPulse>

<slide distance=.28>incoming</slide>

Appearance wrappers blend smoothly into Active by default. Set blend=0 for an immediate switch, or use blend=seconds from 0 to 5 when the reveal stack needs a deliberate handoff.

Nesting effects

Nest tags when two simple effects should act on the same words. Keep the combination purposeful and check readability at the smallest size used by the game.

<wave><colorPulse from=#42d9ff to=#d75cff>MAGIC</colorPulse></wave>

Markup syntax choices

Choose Compatibility (All Providers), Native (Text Studio Only), Text Animator, TMPEffects, or Custom Delimiters in Text Studio Project Settings. The Text Studio Text inspector deliberately follows that project-wide authoring policy instead of carrying a second per-object syntax switch. Compatibility is recommended for mixed content: it accepts native tags, the supported Text Animator brace set, and a safe TMPEffects subset without requiring either provider. Use the migration preview to test representative lines before changing the project profile, then keep the chosen policy stable while content is in production.

Open, close, and nest tags

Canonical Text Studio markup uses angle tags. An opening effect tag starts a range, and a named closing tag ends that range. Tags are case-insensitive for lookup, but use the canonical catalog spelling so source remains easy to search and review.

<wave>Animated text</wave>
<wave amplitude=.18 frequency=.65 speed=1.2>Animated text</wave>

The anonymous closing tag </> closes the most recently opened compatible effect or native rich-text range. It does not close every open range at once. Repeat it to unwind a nested stack. Named closing tags are clearer in shared dialogue files; anonymous closings are useful for compact generated or migrated markup.

<wave><color=#66CCFF>Nested text</></>
<i>A<wave>B</>C</>

An unclosed Text Studio effect continues to the end of the source. This is useful for a treatment that intentionally covers the remainder of a line, but diagnostics should be reviewed because an accidental missing close can affect more text than expected. Mismatched named closings remain visible in diagnostics.

Compatibility profiles and provider syntax

Compatibility (All Providers) accepts canonical Text Studio angle tags, a focused Text Animator brace set, and the safe TMPEffects subset. Native isolates Text Studio markup. Text Animator and TMPEffects each isolate one provider dialect, which is useful for deterministic migration and for content owned by one external authoring format.

{fade}Reveal this{/fade}
{#fade}Hide this{/#fade}
<wave>{fade}{#incr}Compatible range{/#incr}{/fade}</wave>
<!wait=0.25><jump amp=8>TMPEffects source</>

Known Text Animator braces preserve supported timing parameters. Supported TMPEffects animations, show and hide ranges, writer commands, and events translate into canonical Text Studio markup. Unknown or unsupported provider tags remain visible and produce source-ranged diagnostics instead of executing silently.

Parameters, aliases, and values

A tag can use positional parameters, named parameters, or supported short aliases. Named parameters are easiest to maintain because their meaning remains visible. Parameters are resolved in source order, and the last valid occurrence wins when the same setting appears more than once.

<wave amplitude=.18 frequency=.65 speed=1.2>Named values</wave>
<wave a=.18 f=.65>Short aliases</wave>
<colorPulse from=#FF3355 to=#FFFFFF speed=1.7>Critical</colorPulse>

Use speed for a rate and duration for a time span. Playback values include infinite or persistent, loop, pingpong, once or short, and external or weighted where the effect supports them. Colors accept the formats described by the tag browser. Vectors use comma-separated components. Boolean values should be written as true or false.

TextMeshPro rich text inside Text Studio

Text Studio consumes its own effects, actions, expansions, and extension tags while preserving supported TMP rich text for the TMP backend. You can combine bold, italic, underline, strikethrough, color, alpha, size, case, mark, subscript, superscript, font, weight, gradient, link, style, spacing, alignment, margins, line height, position, rotation, material, scale, line breaks, pages, spaces, sprites, and soft hyphens with Text Studio ranges.

<wave><b><color=#66CCFF>Important</color></b></wave>

Native formatting is not an animated effect binding. It remains in Display Text so the backend can render it. Anonymous </> closings are translated to the correct named TMP close. Use <noparse> for backend-supported literal markup regions, or escape angle characters with a backslash when the source should display them.

\<wave\>This is literal markup\</wave\>

Custom delimiters and syntax assets

Leave Markup Syntax unassigned for the recommended Compatibility (All Providers) profile. Native accepts Text Studio angle tags only. Text Animator and TMPEffects isolate their supported provider dialects and keep unrelated authoring tags literal. Custom Delimiters converts one chosen opening and closing character pair into Text Studio angle markup and can optionally continue accepting native angle tags. The opening and closing characters must be different and a custom tag must remain on one line.

  1. Create Assets > Create > Text Studio > Markup Syntax.
  2. Choose Custom Delimiters and enter one opening and one closing character, such as [ and ].
  3. Decide whether authors may continue using native angle tags.
  4. Assign the syntax asset in Text Studio Project Settings and test representative source in Raw and Live modes.
[wave amplitude=.12]Custom syntax[/wave]

Tag Expansion Sheets

A Tag Expansion Sheet gives writers one short project tag that expands into a reviewed opening stack. Auto Closing derives the required named closings in reverse order. Custom Closing is available when the opening markup contains a project-specific construct that automatic derivation cannot represent.

  1. Create Assets > Create > Text Studio > Tag Expansion Sheet.
  2. Add an entry with Tag ID warning.
  3. Set Opening Markup to <shake strength=.08><colorPulse from=#FF3344 to=#FFFFFF><emphasis>.
  4. Keep Closing Mode on Auto and confirm the preview derives </emphasis></colorPulse></shake>.
  5. Register the sheet in Text Studio Project Settings, then use <warning>Reactor unstable</warning>.

Project sheets load as the stable catalog layer. Runtime registration can add or override expansions for generated content. Duplicate IDs and invalid closing stacks appear in diagnostics. Effect Code can bundle required expansion dependencies when a composed treatment is shared.

Escaping, diagnostics, and authoring help

Use the Content tab's tag browser and inline suggestions instead of memorizing every ID. Search by effect name, alias, category, parameter, or integration. The Debug tab lists parsed occurrences with source ranges, resolved text, effect bindings, action markers, implicit end-of-source ranges, and unmatched tags.

  • If markup appears on screen, confirm that the tag is known and the current authoring profile accepts its syntax.
  • If too much text animates, inspect the matching close or the implicit end-of-source range.
  • If a tag works in TMP but not UI Toolkit or 3D, inspect the renderer-channel compatibility warning.
  • If a migrated brace remains literal, confirm that it belongs to the supported compatibility set.

Tag category reference

The appendix provides the complete visual effect gallery. Use these additional categories to understand how non-effect markup participates in the line.

  • Actions: <wait>, <pause>, <resume>, <speed>, <speedUp>, <speedDown>, <waitForInput>, and <event>. Actions are point-in-time instructions and do not require a closing tag.
  • Appearance and disappearance wrappers: <appear effectId> and <disappear effectId> assign registered effects to a lifecycle phase.
  • Character substitution: <scramble> changes presentation glyphs while preserving authored text, layout identity, marker positions, and source mappings.
  • Decorations and TMP formatting: supported native tags remain in Display Text for the active backend.
  • Expansion tags: project-defined short tags expand into reviewed Text Studio stacks.
  • Extension tags: optional packages can register package-owned syntax and processors without adding a hard dependency to the base package.

For every effect tag, the appendix now lists the canonical ID, practical purpose, starting example, visual variations, and source-verified key controls. The website reference can expand those entries into individual searchable pages with aliases, units, complete parameters, backend support, and animated examples.