Appearance
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 type | You 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| Write | Reads |
|---|---|
${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:
| Filter | Does | 0.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 decimals | 0 |
${v|signed(1)} | Always shows a sign, N decimals (default 0) | +0.7 |
${v|time} | Seconds as minutes and seconds, or hours past an hour | 185 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.