Skip to content

Build Reveals and Typewriter Experiences

Choose a source

Typewriter can be None, Built-In, Custom, or Inline. Built-In is the fastest start. Custom points to a reusable preset. Inline exposes the complete settings on this text object. A built-in or custom choice can be converted to Inline when this one line needs a local variation.

Shape the pace

  • Reveal by glyph, word, or line.
  • Use a timing preset or assign custom character and word timings.
  • Choose forward, reverse, center-out, edges-in, all-at-once, or seeded-random order.
  • Add reveal and hide motion without changing the content.
  • Choose start, loop, delay, skip, and input behavior deliberately.
  • Use punctuation-aware audio and marker cues for dialogue rhythm.

Runtime dialogue code can check IsWaitingForAction before calling SkipCurrentWait(). This distinguishes a timed or input action wait from an ordinary paused reveal.

Text Studio Typewriter Preset inspector.

A reusable Typewriter Preset keeps pacing, motion, playback, and skip behavior consistent.

Reveal units and settings sources

Instant displays the complete line. By Glyph gives the familiar character-by-character result. By Word is often better for fast subtitles because it preserves reading rhythm without creating a machine-gun stream of letters. By Line stages instructions or credits. Region and Custom modes are available for specialized providers.

None disables typewriter behavior. Built-In selects a curated recipe. Custom assigns a reusable Typewriter Preset. Inline exposes the complete local recipe. Convert a built-in or custom choice to Inline when one object needs a deliberate exception. Assign a Profile when several objects should share the same complete defaults.

Timing presets

  • Uniform: predictable mechanical pacing.
  • Fast: responsive HUD, notifications, and short interactions.
  • Slow: deliberate reveals with room for voice or atmosphere.
  • Expressive: stronger punctuation rhythm for dialogue.
  • Cinematic: longer beats for titles and staged presentation.
  • Staccato: clipped rhythm for alerts, terminals, or stylized speech.
  • By Word: word-level pacing without extremely fast glyph ticks.
  • Typist: familiar keyboard-like timing variation.
  • Narrative: readable prose pacing with punctuation-aware pauses.

Character and word timings

Character Timings use full text context for abbreviations, punctuation runs, neighboring units, words, lines, paragraphs, inline instant ranges, newline handling, and final-character behavior. The first chosen unit appears immediately; punctuation waits begin after the mark is visible; adjacent punctuation can collapse into one deliberate beat. Word and Line modes apply one boundary delay per group, reordered sequences retain each unit's authored pacing, and the configured trailing wait remains part of reveal completion. Word Timings control word and punctuation-boundary delays. Built-in cadences and custom timing assets expose Wait After Final Reveal to control whether completion includes the final trailing delay. Use <instant>...</instant> to reveal a marked span atomically.

Dialogue test: "Dr. Vale... wait!"

Test abbreviations and ellipses together: Dr. should not receive a sentence-ending pause, while an ellipsis should still create one deliberate beat. Verify the result in the timing preview and Debug summary before adding explicit wait tags.

Clock and update behavior

Choose scaled time for gameplay-bound presentation and unscaled time for menus, pause screens, or dialogue that must continue while Time.timeScale is zero. Update phase determines when Text Studio advances relative to gameplay and UI. Maximum Delta prevents a long suspended frame from instantly consuming an entire reveal. Edit Mode ticking exists for preview, not as a substitute for runtime testing.

Reveal and hide motion

Reveal timing decides which unit is current. Reveal Motion decides how that unit enters. Hide Motion independently decides how it leaves. Use None for a stable reveal, a built-in motion for quick setup, a reusable motion preset for project consistency, or a custom tag stack for a specific treatment.

Reveal Appearance Duration and Disappearance Duration control the visual transition around the timing point. Sequence settings can run forward, reverse, center-out, edges-in, all at once, or seeded random. Loop Reveal restarts the complete experience after its delay. Start behavior decides whether reveal begins automatically or waits for an explicit call.

Skip, continue, waits, and hide policy

SkipReveal completes the current line according to the configured settle policy. AdvanceOrSkip is intended for continue buttons: it first completes an active wait or reveal, then returns true only when the owning dialogue system may advance. SkipCurrentWait cancels a cooperative timed, input, or audio wait without confusing it with an ordinary paused reveal.

public void ContinuePressed()
{
if (dialogueSource.AdvanceOrSkip())
ShowNextLine();
}

Choose whether skipping triggers remaining markers, skips the current wait, settles reveal motion, or jumps to the final visible state. Hide can play its configured sequence, be skipped to its end, or be stopped. Test rapid repeated input, non-skippable custom actions, and a continue press during the first frame of a new line.