In this page you will learn how to add effects to your text.

P.S. Be sure to have implemented Text Animator in your scene. Read more here.


Effects Categories

Effects are divided in three categories, based on their functionality/application. They consist on:

Behavior Effects

Behavior Effects animate letters continuously during time, after the letter has been shown.

wigglepreviewfebucci
An example of the Behavior Effect <wiggle>

Appearance Effects

Appearance Effects animate letters only when they’re appearing on screen. For this reason, they’re mosty used in combination with the typewriter, which shows letters one after another.

verticalexpandpreview
An example of the Appearance Effect {vertexp}

Disappearance Effects

Disappearance Effects make letters dynamically disappear, and under the hood they’re simply Appearance effects in reverse.

decreasing size text animator unity4
An example of the Disappearance Effect {#size}

A list of all built-in effects is available here: Built-in Effects list


How to Apply Effects

You can set different effects to your text in two main ways:

Set default effects to the entire text

You can set which effect(s) will be applied to all letters by default in the TextAnimator component, without having to write effects tags for every text.

  1. Head over to the TextAnimator component
  2. Expand the “Set Default Appearances” or “Set Default Disappearances” section
  3. Edit the array and add any appearance tag you want to include.

Example:

textanimator set default appearance effects
Example: all letters will have the 'size' effect applied

👍🏻 If you don’t want any effect applied by default, simply set the effects’ count to zero.


Set effects to specific parts of the text

You can also apply effects to specific parts of your text by using rich text tags, overriding the default ones (if any).

The effects tag will look like this:

  • Behaviors: <tag> to open, </tag> to close
  • Appearances: {tag} to open, {/tag} to close
  • Disappearances: {#tag} to open, {/#tag} to close
    (basically an appearance tag with a # before it, to simply remind you that disappearances are appearances in reverse).

Once you close an effect tag, the letters will be affected again by the default effect (if any is set).

Example: “I’m cold” can be written as “I’m <shake>cold</shake>“ (in the text component) in order to apply a shaking behavior effect on the specific word “cold”.

Untitled

Example 2 [Click to expand]

Let's say that we have one default effect ("size"), but we want to apply a specific part of the text with the "fade" effect.
We can achieve that result by writing: "default default `{fade}` fade fade fade `{/fade}` default default"

As you can see, the letters that are outside the "fade" tags will have the default effect(s) applied, while the part inside "{fade}" and "{/fade}" will only have "fade".


Modifiers

Modifiers let you change the characteristics of your effects individually, and can be used in all effects categories.

Example: You could have an effect that is stronger than the previous one, but still in the same dialogue line, like “I was <wiggle>strong</wiggle>… but now I’m<wiggle a=3> three times stronger</wiggle>!!!”

Modifiersmultiply the relative value; this way you can easily know how much stronger/weaker a modified effect will result compared to the base one (for this reason, a modifier of “1” will return the same result of a base value).

All Modifiers are structured like this: <effectID modifierID=modifierValue> and you can also use multiple of them (eg. <wiggle a=2 f=4>).

You can read a list of all the available modifiers for each effect: Built-in Effects list

  • Example for Appearances effects: {fade d=3}.
  • Example for Disappearance effects: {#fade d=2}.

Some extra notes:

  • 👍🏻 You can use modifiers when declaring “default/fallback” effects as well
  • ⚠️ Do not write identical attributes in the same tag, since only the last one will take effect.
  • ⚠️ Be sure to remove spaces between the modifierID, the ‘=’ symbol and its value

Extra notes about Rich Text formatting

By using TextAnimator for Unity:

  • You can stack multiple effects together (e.g. “<shake><size>”).
  • You can close all currently opened effects with a single ‘/’ character, like:
    • </>” for Behavior Effects
    • {/}” for Appearance Effects
    • {/#}” for Disappearance Effects.
  • There is no need to close tags if you’re at the end of the text.

More than default effects, you can also create your own.


How to tweak effects values

Built-in effects

You can tweak built-in effects’ values in the TextAnimator component.

  • Expand the category of the effect you want to edit. (Behavior effects or Appearance effects)
  • Expand the effect you want to edit.
text animator edit default effects
Example: editing the 'slide' behavior effect

Shared built-in values

You can also use the same built-in effect values for multiple TextAnimator components.

  • In your project folder, create the scriptable object asset of your effect category (Behaviors/Appearances).
text animator create global effect values scriptable
Create the built-in scriptable object inside your project assets folder
  • Assign the scriptable object to the Text Animator component you want to share the values with.
text animator global effect values builtin inspector
Set the scriptable object inside the TextAnimator component

👍🏻 Any TextAnimator that contains the same built-in scriptable object reference will share its same effect values.


Dynamic Scaling

You can setup uniform effects’ behavior on different screen resolutions.

  • Reference Font Size: represents the size where objects behave as expected. As a reference, you can pick the font size in your unity editor.

Untitled3

Example

For example, open the "Example 1A - Effects" scene, so you'll automatically have all the default effects showed in the text.

  • Set the TMPro text's size to any number, like 30. (remove "auto size", if present)
  • Set the "Reference font size" to that same number.

→ The behavior of your effects in your screen resolution will now be uniform in other screen resolutions.
You can safely tweak the effects values as you prefer, and thanks to this configuration and TextAnimator will maintain the desired and original effect intensities in case the font size changes (do not change the "Reference Font Size", or the scaling will be different).


Intensity Multiplier

⚠️ Some effects act differently based on different fonts and sizes. You can read which effect is affected here: Built-in Effects list

👍🏻 In order to “fix” this, you can use the variable effectIntensityMultiplier to scale all the affected effect’s amplitudes in the TextAnimator component.

Simple explanation: an effect’s strength of 2 could result weak in UI units (pixels), but really strong in world units. Then there is the font asset size etc.

Untitled4

This value will multiply only the affected variables, leaving unchanged the ones that are independent from different fonts and sizes.


Time Scale Mode

You can change the effects TimeScale mode in the “TextAnimator” component.

  • Scaled: effects will slow down / pause based on the game Time.timeScale
  • Unscaled: effects will update even if the game is paused (Time.timeScale = 0)

If you have the typewriter enabled, its timescale will match the relative TextAnimator’s timescale (which means that you can also show letters when the game is paused by setting the timescale to “unscaled”).

⚠️ If the game timescale is negative TextAnimator will act like it’s paused, but it will automatically resume once it’s greater than zero.