Events are special tags that let you send messages (string) to any listener script, once the typewriter has reached a specific part of the text. (For this reason, events work only if the typewriter is enabled)

Scene 'Example 3 - Events'


You can write events in your text by using rich text tags.


Event’s messages are preceded by a question mark, like this: <?eventMessage>.

Example: To call an event named ‘shakeCamera’, write: <?shakeCamera>

  • 👍🏻 An event can have any kind of tag, including built-in effect’s ones.
  • ⚠️ Events are case sensitive. Writing <?camshake> is not the same as writing <?camShake>. Be careful! (or use the string.ToLower() method in your scripts to account for that.)


Events can have one or multiple parameters (starting with the = sign for the first, and then separating the others with a comma ,), to allow you to send multiple data to your scripts.

  • One parameter: <?eventID=parameter1>, will result in a message “eventID” and one parameter “parameter1”.
  • Multiple parameters: <?eventID=p1,p2>, will result in a message “eventID” and parameters “p1” and “p2”.

Listening to events

The scripts that you want to listen from events/messages must subscribe to the onMessage callback inside the Typewriter class. (Scripting Api).


//Inside your script

public Febucci.UI.Core.TypewriterCore typewriter;

//Adds and removes listening to callback
void OnEnable() => typewriter.onMessage.AddListener(OnTypewriterMessage);
void OnDisable() => typewriter.onMessage.RemoveListener(OnTypewriterMessage);

//Does stuff based on event
void OnTypewriterMessage(Febucci.UI.Core.Parsing.EventMarker eventMarker)
    switch (
        case "something":
            // do something

👍🏻 Note how the “message” string has no ‘<‘, ‘?’ and ‘>’ characters, but only contains the message.

You can find the EventMarker API here, for example to get all the parameters of the event (if any).