Skip to content

Text & Variables ​

Labels do more than show fixed text. They understand a small set of markdown for emphasis, and they can show the live value of a variable, updating by themselves whenever it changes.

Markdown in labels ​

Type markdown straight into a label's Text field. The field shows exactly what you typed; the canvas shows the result.

You typeYou get
**Bold**Bold
*Italic* or _Italic_Italic
***Bold italic***Bold italic
`code`code, in a monospaced font

Line breaks and extra spaces are kept as typed, so you can write a short paragraph with a blank line between parts.

Formatting builds on the label's own Font: bold makes the chosen family and size bold, italic makes it italic. Headings, lists, block quotes, links and strikethrough are not drawn – the text shows without that formatting, and a link isn't tappable. For a tappable link, use a Button with an Open Link action.

Markdown works in Labels only. Button titles, toggle titles, stepper labels and segment titles show their text exactly as typed.

Live values with variables ​

A label can include the current value of a variable. Write the variable's name inside ${ }:

Score: ${score}

While the experience runs, ${score} is replaced with the variable's value, and the label updates on its own each time the variable changes. A label can mix as many references and as much plain text as you like:

Round ${round} of 5 – ${g:points} points
WriteReads
${name}a variable of the current scene
${g:name}a variable of the whole experience, kept across scenes

A variable that hasn't been set yet shows as UNDEFINED. Give it a starting value when the experience or scene starts so viewers never see that.

In the UI editor's canvas a label shows its references as typed, like ${score}, so you can see what it reads. Use Preview to see the live values.

Formatting numbers ​

Add a filter after a | to format a number:

FilterDoes0.6789 becomes
${v|fixed(2)}Rounds to N decimals (default 2)0.68
${v|percent}Multiplies by 100 and adds %, N decimals (default 0)68%
${v|int}Drops the decimals0
${v|signed(1)}Always shows a sign, N decimals (default 0)+0.7
${v|time}Seconds as minutes and seconds, or hours past an hour185 becomes 3:05

Filters apply to numbers only. On text they leave the value unchanged, and so does a filter name that doesn't exist.

Where variables come from ​

Variables are set by scripts, and by controls a script has bound to a variable – a slider bound to volume updates ${volume} in every label as it is dragged. Scripting needs the Pro plan, like User Interface itself.

Wrapping, alignment and case ​

  • Wraps Text is on for new labels, so long text flows onto more lines. In a panel sized to its content, labels wrap once the panel reaches about 1 m wide; give the label a Max Width to wrap it sooner.
  • Text Alignment (Leading, Center, Trailing) matters once the text wraps, or when the label is set to Fill.
  • Text Transform changes the case when the text is drawn – handy for headings in capitals. It is applied before markdown, so **bold** stays bold in Uppercase.
  • Letter Spacing sits in the label's Font override, under Appearance Overrides.