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

System.String

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

System.String

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

System.Boolean

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

LocalizableString

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

System.Int32

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

System.Int32

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

System.String

Uuid

Uuid of the underlying node. Pass to SelectChoice(string) to commit. Stable across runs — safe to log for analytics.

public string Uuid { get; }
Property Value

System.String

Docs last synced: 2026-07-08
Screenshot viewer