Skip to content

Event Sheets

An Event Sheet is a no-code way to give an entity behaviour: instead of writing a script, you build a list of events — each one a when this happens → do these things rule. It's the same idea as Construct 3's event sheets or Unreal Blueprints, aimed at building logic without typing code.

Under the hood an event sheet compiles to a normal script (a Behaviour class), so it runs on the exact same engine, attaches to entities the same way, and can talk to hand-written scripts freely (see Working with scripts below). Nothing extra ships to your published game — only the compiled code.

Create one

In the Project panel choose New → ⚡ Event Sheet. It appears with a ⚡ icon (code scripts get a { } icon) and opens in the Event Sheet editor. Double-click it any time to reopen it.

Attach it to an entity exactly like a script: select the entity, and in the Inspector add it to the Scripts section (or drag the sheet onto the entity). One entity can have several sheets and scripts at once, and each entity gets its own copy of the sheet's variables and state.

The WHEN → DO model

Every event has two halves:

  • WHEN — one or more conditions. The event runs when they're all true.
  • DO — one or more actions, run in order when the conditions pass.

Add an event with + Event, then use + when to pick a condition and + do to pick an action. Each one exposes typed inputs (numbers, a dropdown of your tags, a prefab picker, …) right in the row.

text
WHEN  On start
DO    Show message  "Welcome!"

WHEN  Every tick
DO    Rotate by (deg)  [0, 90, 0]      ← 90°/second while playing

WHEN  On collision with tag  Player
DO    Play sound  coin
      Destroy self

Triggers vs. filters

Some conditions are triggers — they decide when the event is even considered: On start, On collision, On message, and so on. Others are filters that are checked every tick, like Variable compare (score > 10). Mixing them reads naturally: On collision with Player, and if lives > 0, do ….

Variables

Use the VARS strip to add per-sheet variables (number, string, or boolean) with a starting value. Set them with the Set variable action and branch on them with the Variable compare condition. Each entity that uses the sheet gets its own variables — perfect for a per-entity counter, cooldown, or state flag.

Sub-events

Click + sub-event on an event to nest another event underneath it. The child only runs when the parent's conditions also pass — an easy way to say when the door is unlocked, and the player presses E, open it. Nest as deep as you like.

Use disable on any event to switch it off without deleting it.

Working with scripts

Because an event sheet compiles to a Behaviour, event sheets and hand-written scripts are interchangeable and interoperate for free:

  • Messages — a Broadcast message action sends a message that any script's onMessage(key, data) hook receives, and vice-versa: a script's this.events.broadcast("...") fires an event sheet's On message condition. This is the cleanest way to wire the two together.
  • Shared world — both read and write the same entities, tags, components, saved data, and spawned prefabs. A sheet can spawn a prefab whose script drives it, and a script can move an entity a sheet is listening on.

See the generated code

Press View code in the Event Sheet editor to see the script your sheet compiles to. It's a normal Behaviour — the same thing you'd write by hand — which makes an event sheet a great way to learn scripting: build the logic visually, then read what it produced. See Scripting basics and the Script API reference for what that code can do.