Choice
One currently-available choice — what the player can pick this step. Returned in Choices from GetChoices().
public class Choice
Inheritance System.Object → Choice
Remarks
A Choice is a frozen snapshot of the underlying node at the moment GetChoices() was called. The runtime allocates a fresh Choice each call — never cache one across steps. The instance is valid only until the next step-advancing call (SelectChoice(string), EnterScene(string, bool), etc.).
To commit the choice, pass Uuid to SelectChoice(string), or use the typed overload SelectChoice(Choice) which extracts the uuid for you.
Title is the recommended display string; LocalizableTitle is the additive sibling that lets a held instance be re-resolved on a mid-game locale switch without re-calling GetChoices().
See Also
Properties
CharacterId
Speaker character id (the writer’s id, not the uuid) used to source portrait / styling on the renderer side. Null for narrator / unattributed choices.
public string? CharacterId { get; }
Property Value
Id
Writer’s human-readable node id (e.g. node_open_box). Useful in debug
output; not a substitute for Uuid on
SelectChoice(string) calls.
public string Id { get; }
Property Value
IsDefault
True when this choice is the one the runtime auto-selects if Timeout elapses. At most one choice in a given set is the default (also surfaced as DefaultChoice).
public bool IsDefault { get; }
Property Value
LocalizableTitle
Additive-localization sibling of Title. Holds enough context
(locale key + frozen args) to re-resolve under a different locale by calling
Resolve(), without re-querying
GetChoices(). Null when
Title is null. Hosts that don’t switch locale mid-step can
ignore this and just read Title.
public LocalizableString? LocalizableTitle { get; }
Property Value
See Also
PlayerId
Seat index this choice is offered to. Single-player projects always emit
1; multi-player projects use this to route the choice to the right seat.
public int PlayerId { get; }
Property Value
Priority
Author-assigned ordering hint (lower = earlier). Ties broken by source order in the project file. Re-sorting choices should preserve this ordering.
public int Priority { get; }
Property Value
Timeout
Per-choice timeout, in seconds, after which IsDefault auto-selects. Null when this individual choice carries no timeout (the set-level Timeout may still apply).
public Nullable<float> Timeout { get; }
Property Value
System.Nullable<System.Single>
Title
Choice text already resolved against the active locale and any inline variable interpolations. Null when the node has no title (system / hidden choices that were materialised but should not render).
public string? Title { get; }
Property Value
Uuid
Uuid of the underlying node. Pass to SelectChoice(string) to commit. Stable across runs — safe to log for analytics.
public string Uuid { get; }