I should not say this everytime, but:

Updating Guide from Previous Versions


2.0.0b1 (in beta for Early Access)

Main Changes

  • Added: Edit Mode Preview, letting you play and edit effects without having to enter Play Mode
  • Added: Events now can have multiple parameters
  • Added: “Composite” Effect, letting you play multiple animations with one single tag
  • Added: Test Framework, both testing the Editor and Runtime plugin features
  • Added: Method to hide or show any letter in the text independently, allowing to show specific word after word etc.
  • Added: “Vertex” Custom Effect, allowing to to specify different animations for each single character’s vertex
  • Improved: Built-in Effects are now deterministic, returing the same result when restarted and allowing a future Timeline integration
  • Improved: Built-in Effects and Actions can now have different tags set by the user
  • Improved: TextAnimator’s base class, allowing to animate different Text Sources in the future (other than TextMeshPro)
  • Improved: Effects and Actions are now Scriptable Objects, allowing for more customization and integrations in your project
  • Improved: Effects and Actions are now stored inside each own Database, allowing you to share them between components
  • Improved: Text Parsing and Rich Text Tags recognition, allowing for custom ones in the future and compatible with external plugins
  • Improved: Made it easier to create custom Effects and Actions via code
  • Improved: Made it easier to create custom Effects through the inspector
  • Improved: TMPro’s ‘page’ tag is now supported!

Other Changes

  • Added: Option to set “Fallback Tags” as Costant in the inspector, applied in the entire text even if there are other tags
  • Added: Option to use the Default Setting’s Effects/Actions Databse, or to set a specific one per component
  • Improved: You can now move the Asset’s installation folder anywhere in your project, since TextAnimator will recognize its location and install new effects there
  • Improved: Assembly reload time
  • Improved: Simplified API and refactoring
  • Improved: UI and UX, notifying you if there are invalid tags in an Effects/Actions Databse, fixing errors for you and more
  • Improved: TextAnimator’s Dynamic Scaling (to have uniform effects between different sizes) is now enabled by default
  • Changed: Renamed “TextAnimatorPlayer” to “Typewriter”
  • Changed: “Preset” Effects (Behaviors etc.) are now renamed “Uniform” Custom Effects
  • Changed: Minimum Unity version to 2020.3.0f1, following Store’s guidelines for new packages
  • Bugfix: mesh not being updated for one frame when Rect Transform dimensions changed
  • Bugfix: Parsing effects was shifted of a few characters in some cases, if TMPro tags were written exactly before a TAnim one.


  • Obsolete: A few APIs have been marked as Obsolete, but they’re still backwards compatibile and include a comment on how to change them before the next updates.
  • Breaking: “TextAnimator.AssignSharedAppearancesData” method has been removed. Pleaase assign Databases from “TextAnimator.DatabaseAppearances”’s property instead.
  • Breaking: “TextAnimator.AssignSharedBehaviorsData” method has been removed. Pleaase assign Databases from “TextAnimator.DatabaseBehaviors”’s property instead.
  • Breaking: “TextAnimator.onEvent” Event has been removed. Please subscribe to messages from their related Typewriter instead, as they’ll get fired only if the text is proceeding thanks to them.
  • Breaking: “Febucci.UI.Core.TAnimBuilder.InitializeGlobalDatabase()” method has been removed. (you can safely remove that line, as it’s not necessary anymore.)
  • Breaking: “Febucci.UI.TextAnimatorPlayer” has been renamed to “Febucci.UI.TypewriterByCharacter”. You can also use Febucci.UI.Core.TypewriterCore for the abstract one.
  • Breaking: “Febucci.UI.TextAnimator” has been renamed to “Febucci.UI.TextAnimator_TMP”. You can also use Febucci.UI.Core.TAnimCore for the abstract one.

Might affect you if you have created a custom Typewriter or Actions:

  • Breaking: “TAnimPlayerBase.isWaitingForPlayerInput” property has been removed. Please refer to the “input” action istead and check if it is running.
  • Breaking: ‘TAnimPlayerBase.WaitInput” method has been removed. Please implement custom actions following the new guide.
  • Breaking: ‘TAnimPlayerBase.DoCustomAction” method has been removed. Please implement custom actions following the new guide.
  • Breaking: ‘TAnimPlayerBase.OnTypewriterCharDelay’ method has been removed.
  • Changed: Typewriter’s “GetWaitAppearanceTimeOf’ method has parameter from ‘char’ to ‘int’ (characterIndex)
  • Changed: Typewriter’s “GetWaitDisappearanceTimeOf’ method has parameter from ‘char’ to ‘int’ (characterIndex)



[1.3.3] General Improvements and Fixes

Main Changes

  • Bugfix: Disappearance event not being invoked in some rare occasions
  • Bugfix: TextAnimatorPlayer error thrown for missing unicode variables in TMPro

API Changes

  • Added: method to assign Effect’s Scriptable Object data via script
  • Added: option to manually update a Text Animator component

[1.3.2] New Appearance Effect: Random Direction

Main Changes

  • Added: New appearance/disappearance effect: Random Direction
  • Added: Integration guide for Yarn Spinner 2.X

Other Changes

  • Improved: Support to TMPro Input Fields after its latest update
  • Bugfix: Index out of range in some cases when the text was set before OnEnable
  • Bugfix: Effects’ dynamic scaling wasn’t applied to characters that had a different size than TMPro’s one
  • Bugfix: Mesh not being updated if TMPro.maxVisibleCharacters changed

Minor Changes

  • Added: ‘Games made with Text Animator” showcase page in the website
  • Added: Section in the AboutWindow for Text Animator showcase submissions

API Changes

  • Removed: TextAnimator.UpdateEffectIntensity method, since it’s now automatically updated before applying letters

[1.3.1] General Improvements and Fixes

Main Changes

  • Added: Integration for Unity’s Visual Scripting package (formerly “Bolt”)
  • Added: Inspector option for resetting effects when a new text is set
  • Added: Welcome page when you import/update the package
  • Bugfix: Typewriter OnTextDisappeared not being invoked on inverted orientations
  • Bugfix: Typewriter OnTextDisappeared was fired without fully waiting for the last letter’s animation(s) to end
  • Bugfix: Typewriter could have raised an IndexOutOfRange when waiting for disappearances in short texts
  • Bugfix: Some fonts/character caused IndexOutOfRange when a text was enabled on LateUpdate
  • Bugfix: Fade effects were fading to black instead of preserving the rgb of letters
  • Bugfix: Rainbow effect now preserves the letters’ alpha when shifting its hue
  • Bugfix: Error when activating text effects on OnEnable for some fonts and characters
  • Bugfix: Typewriter Disappearance speed couldn’t be lower than DeltaTime

API Changes

  • Added: Typewriter’s “isWaitingForPlayerInput” boolean, for when the typewriter is in the action tag
  • Exposed: Text Animator effects intensity multiplier
  • Exposed: Text Animator dynamic scaling boolean
  • Exposed: Text Animator reference font size

[1.3.0] Disappearance Effects and Assembly Definition Files

Please perform a clean install for this version (delete the folder plugin before importing the new one), thanks!

Main Changes

  • Added: Disappearance Effects, which let you dynamically hide letters from both Left to Right and Right to Left, contain different personalization options and more.
  • Added: Assembly Definition Files
  • Added: Modifiers for Appearance and Disappearance effects
  • Improved: Fallback/default effects now support modifiers as well

Other Changes

  • Added: Method that resets the effects time
  • Bugfix: Closing TMPro tags of one character inside TextAnimator effects is now elaborated correctly
  • Bugfix: IndexOutOfRange exception thrown for some invalid characters or fonts
  • Bugfix: Effects index shifted in appended texts in case the previous text had TMPro tags
  • Bugfix: Effects with the same tag of fallbacks weren’t closed correctly at their first occurence in text
  • Bugfix: Events weren’t case sensitive
  • Bugfix: Mesh not being updated if the text gameObject was inactive
  • Bugfix: [WebGL] throwing unrepresented number error
  • Improved: Moved files and folders for a better organization
  • Improved: Documentation pages
  • Improved: The plugin’s scripting API now references Unity’s Scripting API as well.

Minor Changes

  • Added: “Debug Mode” for better support requests (available only if you add a scripting define symbol, so it doesn’t ships player builds)
  • Improved: .meta files for example scenes that didn’t have some variables serialized
  • Improved: Scripts comments

API Changes:

  • Changed: TextAnimator.IncreaseVisibleCharacter() to TextAnimator.maxVisibleCharacter++
  • Removed: TextAnimator.SyncText, please use SetText instead
  • Removed: TextAnimator.deltaTime, please use m_time.deltaTime
  • Improved: Built-in’s effect values are now public for their shared ScriptableObjects


[1.2.12] Append text

Main Changes

  • Added: Methods to append the text (both for the Typewriter and TextAnimator itself)
  • Added: Custom characters parsing symbols
  • Added: TextMeshPro’s support for firstVisibleCharacters, maxVisibleCharacters, maxVisibleWords and maxVisibleLines

Other Changes

  • Bugfix: solved error caused if an empty text was being set before TextAnimator’s Awake scripting order
  • [API] Obsolete: TextAnimator.SyncText is now Obsolete and will be removed from next versions. Please use “SetText” instead.
  • [Docs] Removed obsolete methods from the Scripting API.

[1.2.11] Ink Integration & 2 New Effects

Main Changes

  • Added: “Pendulum” and “Dangle” behavior effects
  • Added: Ink integration
  • Bugfix: Actions are now correctly parsed case sensitive
  • Bugfix: Modules for custom effects (created in the inspector) are now correctly disabled and return the correct value

Other Changes

  • Added: Methods to disable effects for single TextAnimator components
  • Added: Typewriter option to skip waiting for the very last letter
  • Added: Newly created custom behaviors (created in the inspector) have all their modules’ curve postWrapMode set to “loop” by default
  • Bugfix: Solved issue that prevented Appearance effects from having the correct values at startup
  • Bugfix: Multiple similar effects (same tag but with different modifiers) can now be applied to the text

[1.2.10] Global Built-in effect values

Main Changes

  • Added: Global built-in effect values via scriptable objects.
  • Added: TMPro’s <noparse> tag now also disables TextAnimator formatting.
  • Added: Typewriter option to keep the typing speed for all the texts.
  • Added: Typewriter option to skip the wait for new lines (‘\n’).

Other Changes

  • Bugfix: Typewriter events written directly before a TMPro tag (e.g. color) are now triggered correctly.
  • Bugfix: Solved issue that prevented behavior fallback effects from being applied to letters.
  • Bugfix: “Horizontal expand” appearance now correctly shows the “effect start side” option.
  • Improved: Example Scenes texts.

Minor Changes

  • Bugfix: [Inspector] typewriter’s delay field has the correct indent level.
  • General API: Exposed “delay” variables in the default typewriter.

[1.2.9] Scripting API and Custom Effects via C#

If you’ve written custom effects via C#, please read the updating guide.

Main Changes

  • Added: Scripting API sections in the documentation, automatically built from code.
  • Added: “Behavior Effects Fallbacks”, which let you set which behavior effects to apply to a text/letter if it has no tags assigned.
  • Improved: comments in all public APIs, also expanded with examples and manual references.
  • API: Custom Effects C# are automatically recognized via C#.

Other Changes

  • Bugfix: effect classes are not stripped from the build for AOT platforms (or IL2CPP).
  • General: Appearance effects are calculated only once at startup.
  • General: TextAnimator now instantiates similar effect classes only once, even if the user write more identical tags in the same text.

API Changes:


  • Added: “TMPro.TMP_CharacterInfo” variable reference for character data in custom effects.
  • Added: Attribute “EffectInfo” for all effects.
  • Moved: “Behavior Effects’” time and deltaTime are now stored inside a “TimeData” struct.
  • Removed: “CustomEffects” data holder class. You should now use built-in effects values instead, or reference variables external from TextAnimator (eg. in your game manager).


  • Renamed: AppearanceEffects’ “showDuration” to “effectDuration”.
  • Renamed: EffectBase’s “effectIntensity” to “uniformIntensity”.
  • Moved: “IsTagLongEnough” from TextAnimator.cs to TextUtilities.cs.
  • Access: EffectBase’s region management code inside RegionManager class.
  • Access: variables inside TAnimGlobalDataScriptable are now internal.
  • Access: EffectBase, core methods are now internal.

Minor Changes

  • Improved: TextAnimator labels in the inspector.
  • Bugfix: tags are not processed if empty.
  • General: some effects performances and code organization, especially preset effects.
  • Bugfix: “text utilities” class is now initialized even if the user calls it before initializing TextAnimator.
  • Bugfix: logwarning thrown in the user wanted to start the typewriter from OnEnable but the “usetypewriter” option was disabled.
  • Moved the following classes inside their own files: “TAnimTags”, “TypewriterAction”, “TAnimBuilder”.

[1.2.8] General Improvements and Fixes

  • Added: Help links in the inspector for each panel in the TextAnimator, which bring you to the related documentation page.
  • Added: MenuItems with documentation and support links.
  • Improved: Documentation page for Custom Effects from the Inspector.
  • Bugfix: Enabled custom effects’ decay “loop” and “pong” in the AnimationCurve.
  • Bugfix: Preprocessor that prevented the compiler from building the app.
  • Bugfix: Float parsing not working in some cultures, pt2 (we see you again, dear enemy).

[1.2.7] Documentation, Inspector and Typewriter Enhancements

If you’ve written custom actions, please read the updating guide.

Main Changes

  • Added: The typewriter can now display more characters per frame.
  • Improved: The documentation, its roadmap and the support form have been improved and are now all hosted on a new dedicated website.
  • Improved: Inspector for the following components: “TextAnimator” “TextAnimatorPlayer” (including base class), “Global Data” scriptable object.

Other Changes

  • Added: Methods for starting or stopping the typewriter.
  • Added: Option to disable appearance/behavior effects for all TextAnimators.
  • Improved: comments, tolltips and scripts structure of “TextAnimator.cs” and “TextAnimatorPlayer.cs”.
  • Removed the and improved the “Documentation & Quick Start” pdf.

Api Changes


  • Improved: Custom Actions API [if you created custom actions, please read the updating guide].
  • Change: TextAnimator.cs, “hasActions” boolean is now internal.


  • Removed obsolete methods/events in the typewriter base class.

Minor Changes:

  • Added: You can now decide from which methods automatically start the typewriter (“show text” “on enable” etc.)
  • Improved: The typewriter’s inspector can also now let you choose the delay based on desired characters count per second.
  • Bugfix: coroutine doesn’t start anymore if the object is inactive.
  • Bugfix: custom effect examples are now commented out.
  • General: typewriter minimum delay has been lowered to 0.0001.
  • General: Preset effects, renamed “curve” in “intensity/decay over time”.

[1.2.6] Global Preset Effects

Main changes:

  • Added: Global Preset Effects. You can now create effects and share them along multiple TextAnimator components, without having to create a prefab.
  • Bugfix: Attributes are now correctly applied to all effects.
  • Performance: The default effects database (including global effects) is built only once, improving performance if you have multiple TextAnimators. Now, TextAnimators will build only their local database, if any local effect is present.

Other Changes:

  • Bugfix: Error thrown if TMPro (GUI) had its canvas disabled, preventing TextAnimator to update TMPros’ mesh and apply effects.
  • Bugfix: Trigger Event on skip works as intended.
  • Bugfix: Custom appearances (c#) values is now serialized correctly.
  • Bugfix: Error thrown when users skipped the typewriter but it didn’t present any event.
  • Bugfix: Fade Behavior works intended.

Minor Changes:

  • Added: Custom TextAnimator Inspector now has two helper buttons, one that lets you locate the “Global Data” scriptable object, one that resets behavior effects time (editor only).
  • Added: Unity Menu Item that lets you locate the “Global Data” scriptable object.
  • General: Improved custom editor for the TextAnimator Component.
  • API: effects default tags are now stored in the static TAnimTags class.

[1.2.5] General Improvements and Fixes

Main Changes:

  • Added: option to trigger remaining events on typewriter skip.
  • Improved: Events and Features are now triggered based on their order, even if they’re placed on the same letter.
  • Bugfix: IndexOutOfRange exception when using different fonts and materials.
  • Bugfix: Custom Effects are now properly added to the database list.
  • General: Events are now case sensitive by default.

Other Changes:

  • Improved: The usage of the “TryGetComponent” method (from Unity 2019.2 or newer) has been extend to all other components references, inside TAnimPlayerBase.cs and TextAnimator.cs
  • General: As requested, changed classes access modifiers inside the Core namespace. (this step prepares the next updates).
  • General: TAnimPlayerBase.cs, OnEnable and OnDisable methods are now virtual.
  • General: Improved comments.

[1.2.4] Dynamic Effects Intensity

Main Changes

  • Added: Dynamic effects’ intensity based on different font sizes.
  • Added: timescale for typewriter and effects, choosing between “Scaled” or “Unscaled”.
  • Added: OnTypewriterStart event in the typewriter base

Other Changes

  • Improved: Documentation page “Managing Effects”, turned some sections to expandable.
  • Added: CharsDisplayTime attribute, telling the user in the inspector how many letters will be displayed per second and per minute.
  • Added: ForceMeshUpdate() method in TextAnimator.cs, which lets users tell force the TMPro mesh and refresh record its changes, at the end of the frame.
  • Bugfix: setting text via the TempFix now properly clears the mesh if the text is empty
  • Bugfix: fixed wrong attributes parsing in some countries
  • Bugfix: text doesn’t flicker anymore if it’s not emtpy and is activated in the scene after “Awake” (it occurred only during the first activation)
  • Bugfix: feature tags (like “waitfor”) now work if written at the very beginning of the text
  • Bugfix: changing the color property of TMPro via script now triggers mesh changes.
  • Bugfix: the temporal TMPro’s fix now clears the mesh if the text is empty
  • General: replaced effects interfaces with base classes.

Api Changes

  • Obsolete: the “onTypeWriterEnded” event is now obsolete and will be removed from the next versions, since you can use the “onTextShowed” one instead
  • Obsolete: the “OnTypeWriterStart” method is now obsolete and will be removed from the next versions, since you can use its related event instead

Minor Changes

  • General: The inspector’s minimum positive value is now 0.01
  • General: The Inspector now shows the “EasyIntegration” label instead of “TriggerAnimPlayerOnChange” (the saved value won’t be lost if you update, it’s only a visual thing)
  • General: Improved “Easy Integration” tooltip and warning in the inspector.
  • Performance: using “TryGetComponent” method instead of “GetComponent” from Unity version 2019.2 and upper.

[1.2.3] Typewriter Sounds

Main features

  • Added typewriter sounds examples
  • The third party plugin “Naninovel” is now integrated (partially).

Main changes

  • Improvement: Shake Effect (and random directions generation) has been improved to prevent similar directions occurring subsequently
  • Bugfix: the typewriter is now triggered when using Easy Integration (from TMPro) even if you’re setting the same exact text subsequently

Other changes

  • Bugfix: if using the EasyIntegration, the text is correctly hidden for the very first time (in its first frame)
  • Bugfix: the complete text is not showed anymore for half a frame in some implementations, now hiding it properly
  • Bugfix: the TextAnimatorPlayer now checks for the text to be active in the entire scene (and not locally) before starting its coroutine
  • Bugfix: TextAnimatorPlayer can now show similar texts without any tag, if triggered

[1.2.2] Stability

Main changes

  • Added: option to wait for punctuaction time only if the current character is the last in a sequence (like: ‘Hello….’) in the basic TextAnimatorPlayer.
  • Added: variable that represents the latest shown character (TextAnimator.cs)
  • Added: method that returns the next character to show (TextAnimator.cs)
  • You can now use the TMPro’s “u”, “s” and “font” tags in the same text (even if applying effects to the first two is not suggested)
  • Improved to the way Text Animator applies effects to letters, leading to some bugfixes and even more stability

Other changes

  • Bugfix: the typewriter can now skip when waiting for puntuactions.
  • Bugfix: letters at the end of the some specific texts are properly shown (however, I have to admit that this bug made some fun results)
  • Bugfix: variable “charsTimeOffset” now works as intended when creating Appearance effects
  • Bugfix: “<3” and other uncompleted/unrecognized tags are now correctly displayed in the text now
  • Performance: improved core performance (both memory & elaboration)
  • Performance: improved performance when changing texts from TextMeshPro, especially if there is no typewriter linked to the component
  • Bugfix: The “MinValue” attribute now shows tooltips correctly
  • Added tooltips to the TextAnimatorPlayer class.

[1.2.1] Effects Creator Update

Main Features

  • You can now create effects in the inspector, controlling movements, rotations, scale, colors and emission. (With a Custom Inspector as well)
  • You can set multiple appearance effects via tags, using ‘{‘ and ‘} as’ opening and closing characters.

Other Features

  • TextMeshPro’s “style” tag is now compatible
  • You can skip the remaining typewriter by invoking the “SkipTypewriter()” method.
  • Added custom feature “speed”, which changes the typewriter speed via tags.
  • Added Unity Event “onCharacterVisible(char)” in TAnimBase.cs script, invoked each time a character becomes visible.
  • Added Unity Event “onTextShowed” in the TAnimBase.cs script, invoked when the text is completely shown.
  • Added new example scenes, including presets and some effects use cases.
  • PlayMaker is now supported.


  • Performance: the plugin now builds an effects database (including users’ custom effects), optimizing the tags’ lookup at runtime.

API Changes - Custom Effects

  • Custom effects are now implemented differently; the user has to add their “ID” and “type of class” in a static readonly array. (Same CustomEffects.cs file)

API Changes - Removed Deprecated Methods

  • Removed the TextAnimatorPlayer.cs’ deprecated methods named “ShowTextInstantly” and “StartShowingText”, as predicted in the version 1.2.0

Minor tweaks - Core

  • Performance: +10%, by organizing differently characters IDs & arrays
  • Performance: Random values are generated only once
  • Performance: Improved characters’ center calculation
  • Performance: Improved formatting and memory management
  • Performance: Removed unnecessary “array returns” from TextUtilties extention
  • Bugfix, wrong index when adding A LOT of letters like there’s no tomorrow
  • Bugfix: Tags not belonging to Text Animator are no longer written strictly in lowercase
  • Bugfix: TextAnimatorPlayer.cs onTypeWriterEnded now triggers properly when changing TMPro text (Easy Integration)
  • Bugfix: Fixed a wrong variable being shown for the “HorizontalExpand” appearance effect, in the TextAnimator Custom Inspector
  • General: When creating a new script, the default appearance effect is now “size”
  • General: Events are now triggered before a letter, instead of getting triggered after it
  • General: Removed suggestion via Debug.Log to not use “vertexp” and “horiexp” appearances effects together. It’s now suggested in the Inspector.
  • General: Organized example scenes

[1.2.0] Easy Integration


  • Setting the text via script is not strictly necessary anymore.
  • TextAnimatorPlayer’s text can now be set when the GameObject is disabled.

API Changes - TAnimPlayerBase.cs

  • Methods “StartShowingText” and “ShowTextInstantly” now obsolete; replaced with “ShowText”.
  • Method”OnTextEnded” is now an event called “onTypeWriterEnded”.
  • The typewriter is now enabled via the inspector.


  • Performance improvements when formatting tags.
  • Bugfix when checking if the user wrote compatible tags.
  • Removed the “Integrations” folder (thanks to the Easy Integration).


[1.1.1] BugFixes


  • Documentation: Added a Public Roadmap

Important Changes

  • Fixed an error occurring when syncing a shorter text than the previous one.
  • Modifiers don’t have value limits anymore.

Other Tweaks

  • Bugfix when enabling the define #LOGS_DEBUG in the TextAnimator.cs script
  • Improved debug of the base Effect classes.
  • Documentation: Behavior Effects’ properties are now visible in the “Effects’ list” page.

[1.1.0] Initial Release - 2019.12.19

First Realease.