Skip to main content

Complete native controls

This reference documents every current public declaration in this part of Pine. Examples run inside App.Mount(), a component factory, or an explicit UI.Root(...) unless they only create state/configuration. Explicit UI.Mount(...) remains available for advanced ownership. Variable names such as count, items and label refer to the typed values described by each example. All APIs run on Unity’s main thread.

UI.Button​

public static Button Button(Value<string> text, Action click, params IProperty<Button>[] properties)

Creates a complete native Button with a background target graphic, centered TMP label, visible focus colors and an owned click handler. Text accepts literals or tracked getters. Mouse/touch and navigation submit are handled by Unity's compatible input module.

ParameterMeaning
textThe typed text input (Value<string>); literals and supported reactive adapters follow this overload's documented behavior.
clickOwned callback invoked by native pointer or navigation submit.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Button(
text: "Increment",
click: () => count.Value++,
UI.Size(width: 240, height: 48)
);
public static Button Button(Func<string> text, Action click, params IProperty<Button>[] properties)

Creates a complete native Button with a background target graphic, centered TMP label, visible focus colors and an owned click handler. Text accepts literals or tracked getters. Mouse/touch and navigation submit are handled by Unity's compatible input module.

ParameterMeaning
textThe typed text input (Func<string>); literals and supported reactive adapters follow this overload's documented behavior.
clickOwned callback invoked by native pointer or navigation submit.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Button(
text: "Increment",
click: () => count.Value++,
UI.Size(width: 240, height: 48)
);

UI.Toggle​

public static Toggle Toggle(Source<bool> value, params IProperty<Toggle>[] properties)

Creates a complete native Toggle with background, checkmark and centered label. A Source<bool> provides two-way binding; Value<bool> provides source-to-control binding. Pine owns graphic wiring, default navigation and focus colors.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var enabled = UI.Source(value: false);
UI.Toggle(value: enabled, text: "Enabled", UI.Size(width: 240, height: 48));
public static Toggle Toggle(Source<bool> value, Value<string> text, params IProperty<Toggle>[] properties)

Creates a complete native Toggle with background, checkmark and centered label. A Source<bool> provides two-way binding; Value<bool> provides source-to-control binding. Pine owns graphic wiring, default navigation and focus colors.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
textThe typed text input (Value<string>); literals and supported reactive adapters follow this overload's documented behavior.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var enabled = UI.Source(value: false);
UI.Toggle(value: enabled, text: "Enabled", UI.Size(width: 240, height: 48));
public static Toggle Toggle(Value<bool> value, params IProperty<Toggle>[] properties)

Creates a complete native Toggle with background, checkmark and centered label. A Source<bool> provides two-way binding; Value<bool> provides source-to-control binding. Pine owns graphic wiring, default navigation and focus colors.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var enabled = UI.Source(value: false);
UI.Toggle(value: enabled, text: "Enabled", UI.Size(width: 240, height: 48));
public static Toggle Toggle(Value<bool> value, Value<string> text, params IProperty<Toggle>[] properties)

Creates a complete native Toggle with background, checkmark and centered label. A Source<bool> provides two-way binding; Value<bool> provides source-to-control binding. Pine owns graphic wiring, default navigation and focus colors.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
textThe typed text input (Value<string>); literals and supported reactive adapters follow this overload's documented behavior.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var enabled = UI.Source(value: false);
UI.Toggle(value: enabled, text: "Enabled", UI.Size(width: 240, height: 48));

UI.Slider​

public static Slider Slider(Source<float> value, params IProperty<Slider>[] properties)

Creates a complete native Slider with background, fill and handle. A Source<float> is two-way and normalizes to native clamping; Value<float> is one-way. Bounds accept reactive finite values, including negative minima; maximum must be at least minimum.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var volume = UI.Source(value: 0.5f);
UI.Slider(
value: volume,
minimum: 0f,
maximum: 1f,
UI.Size(width: 240, height: 48)
);
public static Slider Slider(Source<float> value, Value<float> minimum, Value<float>? maximum, params IProperty<Slider>[] properties)

Creates a complete native Slider with background, fill and handle. A Source<float> is two-way and normalizes to native clamping; Value<float> is one-way. Bounds accept reactive finite values, including negative minima; maximum must be at least minimum.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
minimumReactive finite lower bound; negative values are supported.
maximumReactive finite upper bound, at least the lower bound.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var volume = UI.Source(value: 0.5f);
UI.Slider(
value: volume,
minimum: 0f,
maximum: 1f,
UI.Size(width: 240, height: 48)
);
public static Slider Slider(Value<float> value, params IProperty<Slider>[] properties)

Creates a complete native Slider with background, fill and handle. A Source<float> is two-way and normalizes to native clamping; Value<float> is one-way. Bounds accept reactive finite values, including negative minima; maximum must be at least minimum.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var volume = UI.Source(value: 0.5f);
UI.Slider(
value: volume,
minimum: 0f,
maximum: 1f,
UI.Size(width: 240, height: 48)
);
public static Slider Slider(Value<float> value, Value<float> minimum, Value<float>? maximum, params IProperty<Slider>[] properties)

Creates a complete native Slider with background, fill and handle. A Source<float> is two-way and normalizes to native clamping; Value<float> is one-way. Bounds accept reactive finite values, including negative minima; maximum must be at least minimum.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
minimumReactive finite lower bound; negative values are supported.
maximumReactive finite upper bound, at least the lower bound.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var volume = UI.Source(value: 0.5f);
UI.Slider(
value: volume,
minimum: 0f,
maximum: 1f,
UI.Size(width: 240, height: 48)
);

UI.Scrollbar​

public static Scrollbar Scrollbar(Source<float> value, params IProperty<Scrollbar>[] properties)

Creates a complete native Scrollbar with a wired handle and target graphic. Source<float> binds two ways; Value<float> binds one way. Normalized size defaults to 0.2 and can be reactive.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var position = UI.Source(value: 0f);
UI.Scrollbar(value: position, UI.Size(width: 240, height: 24));
public static Scrollbar Scrollbar(Source<float> value, Value<float>? size, params IProperty<Scrollbar>[] properties)

Creates a complete native Scrollbar with a wired handle and target graphic. Source<float> binds two ways; Value<float> binds one way. Normalized size defaults to 0.2 and can be reactive.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
sizeThe typed size input (Value<float>?); literals and supported reactive adapters follow this overload's documented behavior.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var position = UI.Source(value: 0f);
UI.Scrollbar(value: position, UI.Size(width: 240, height: 24));
public static Scrollbar Scrollbar(Value<float> value, params IProperty<Scrollbar>[] properties)

Creates a complete native Scrollbar with a wired handle and target graphic. Source<float> binds two ways; Value<float> binds one way. Normalized size defaults to 0.2 and can be reactive.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var position = UI.Source(value: 0f);
UI.Scrollbar(value: position, UI.Size(width: 240, height: 24));
public static Scrollbar Scrollbar(Value<float> value, Value<float>? size, params IProperty<Scrollbar>[] properties)

Creates a complete native Scrollbar with a wired handle and target graphic. Source<float> binds two ways; Value<float> binds one way. Normalized size defaults to 0.2 and can be reactive.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
sizeThe typed size input (Value<float>?); literals and supported reactive adapters follow this overload's documented behavior.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var position = UI.Source(value: 0f);
UI.Scrollbar(value: position, UI.Size(width: 240, height: 24));

UI.TextField​

public static TMP_InputField TextField(Source<string> value, params IProperty<TMP_InputField>[] properties)

Creates a complete TMP_InputField with a clipped text viewport, text component, placeholder and caret. Source<string> binds two ways; Value<string> binds one way. Native Unity supplies keyboard/IME behavior, and properties remain typed to the field.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var playerName = UI.Source(value: "");
UI.TextField(
value: playerName,
placeholder: "Name",
UI.CharacterLimit(limit: 24),
UI.Size(width: 240, height: 48)
);
public static TMP_InputField TextField(Source<string> value, Value<string> placeholder, params IProperty<TMP_InputField>[] properties)

Creates a complete TMP_InputField with a clipped text viewport, text component, placeholder and caret. Source<string> binds two ways; Value<string> binds one way. Native Unity supplies keyboard/IME behavior, and properties remain typed to the field.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
placeholderThe typed placeholder input (Value<string>); literals and supported reactive adapters follow this overload's documented behavior.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var playerName = UI.Source(value: "");
UI.TextField(
value: playerName,
placeholder: "Name",
UI.CharacterLimit(limit: 24),
UI.Size(width: 240, height: 48)
);
public static TMP_InputField TextField(Value<string> value, params IProperty<TMP_InputField>[] properties)

Creates a complete TMP_InputField with a clipped text viewport, text component, placeholder and caret. Source<string> binds two ways; Value<string> binds one way. Native Unity supplies keyboard/IME behavior, and properties remain typed to the field.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var playerName = UI.Source(value: "");
UI.TextField(
value: playerName,
placeholder: "Name",
UI.CharacterLimit(limit: 24),
UI.Size(width: 240, height: 48)
);
public static TMP_InputField TextField(Value<string> value, Value<string> placeholder, params IProperty<TMP_InputField>[] properties)

Creates a complete TMP_InputField with a clipped text viewport, text component, placeholder and caret. Source<string> binds two ways; Value<string> binds one way. Native Unity supplies keyboard/IME behavior, and properties remain typed to the field.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
placeholderThe typed placeholder input (Value<string>); literals and supported reactive adapters follow this overload's documented behavior.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var playerName = UI.Source(value: "");
UI.TextField(
value: playerName,
placeholder: "Name",
UI.CharacterLimit(limit: 24),
UI.Size(width: 240, height: 48)
);

UI.Dropdown​

public static TMP_Dropdown Dropdown(Source<int> selected, Value<string[]> options, params IProperty<TMP_Dropdown>[] properties)

Creates a complete TMP_Dropdown with caption, inactive scrollable template, item toggle and label. Options and selection accept typed reactive inputs. Source<int> binds two ways and stays normalized when options change. Changed option names close an expanded native menu immediately; selection-only updates preserve its items. Reduced motion disables native fade travel.

ParameterMeaning
selectedThe typed selected input (Source<int>); literals and supported reactive adapters follow this overload's documented behavior.
optionsTyped reactive option labels in display order. Null is treated as an empty collection; changing names closes an expanded native menu to avoid stale choices.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var selection = UI.Source(value: 0);
UI.Dropdown(
selected: selection,
options: new[] { "Low", "High" },
UI.Size(width: 240, height: 48)
);
public static TMP_Dropdown Dropdown(Value<int> selected, Value<string[]> options, params IProperty<TMP_Dropdown>[] properties)

Creates a complete TMP_Dropdown with caption, inactive scrollable template, item toggle and label. Options and selection accept typed reactive inputs. Source<int> binds two ways and stays normalized when options change. Changed option names close an expanded native menu immediately; selection-only updates preserve its items. Reduced motion disables native fade travel.

ParameterMeaning
selectedThe typed selected input (Value<int>); literals and supported reactive adapters follow this overload's documented behavior.
optionsTyped reactive option labels in display order. Null is treated as an empty collection; changing names closes an expanded native menu to avoid stale choices.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

var selection = UI.Source(value: 0);
UI.Dropdown(
selected: selection,
options: new[] { "Low", "High" },
UI.Size(width: 240, height: 48)
);

UI.ScrollView​

public static ScrollRect ScrollView(Component content, params IProperty<ScrollRect>[] properties)

Creates a complete native ScrollRect with a clipped viewport and drag-receiving surface. Native content results attach without losing their identity; a construction getter builds content within a fill-width, auto-height host. Scrolling is vertical by default and axes can be configured explicitly.

ParameterMeaning
contentNative scroll content or scoped construction callback; the viewport is supplied internally.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.ScrollView(
content: UI.Column(UI.AutoHeight(), UI.Children(UI.Label(text: "Content"))),
UI.Size(width: 300, height: 120)
);
public static ScrollRect ScrollView(Func<Component> content, params IProperty<ScrollRect>[] properties)

Creates a complete native ScrollRect with a clipped viewport and drag-receiving surface. Native content results attach without losing their identity; a construction getter builds content within a fill-width, auto-height host. Scrolling is vertical by default and axes can be configured explicitly.

ParameterMeaning
contentNative scroll content or scoped construction callback; the viewport is supplied internally.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.ScrollView(
content: UI.Column(UI.AutoHeight(), UI.Children(UI.Label(text: "Content"))),
UI.Size(width: 300, height: 120)
);

UI.Progress​

public static Image Progress(Value<float> value, params IProperty<Image>[] properties)

Creates a native horizontal filled Image backed by a generated white sprite. Progress is clamped between zero and one and supports typed reactive values/getters. Apply Tint, Size and other Image-compatible declarations normally.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Progress(value: () => health.Value / 100f, UI.Size(width: 300, height: 20));
public static Image Progress(Func<float> value, params IProperty<Image>[] properties)

Creates a native horizontal filled Image backed by a generated white sprite. Progress is clamped between zero and one and supports typed reactive values/getters. Apply Tint, Size and other Image-compatible declarations normally.

ParameterMeaning
valueThe typed value or reactive input to read/apply; sources remain observable for the owning lifetime.
propertiesCompatible typed declarations to apply; incompatible component/property combinations are rejected at compilation.

Returns: The live native component, owned by the active scope. Retain it for direct native access or typed UI.Apply; reactive bindings update this same instance.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Progress(value: () => health.Value / 100f, UI.Size(width: 300, height: 20));

UI.Placeholder​

public static IProperty<TMP_InputField> Placeholder(Value<string> text)

Binds the text of a completely wired TMP_InputField placeholder. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
textThe typed text input (Value<string>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.TextField(value: playerName, UI.Placeholder(text: "Name"));
public static IProperty<TMP_InputField> Placeholder(Func<string> text)

Binds the text of a completely wired TMP_InputField placeholder. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
textThe typed text input (Func<string>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.TextField(value: playerName, UI.Placeholder(text: "Name"));

UI.CharacterLimit​

public static IProperty<TMP_InputField> CharacterLimit(Value<int> limit)

Binds the native text-field character limit; zero means unlimited and negative limits are rejected. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
limitThe typed limit input (Value<int>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.TextField(value: playerName, UI.CharacterLimit(limit: 24));

UI.SliderDirection​

public static IProperty<Slider> SliderDirection(Value<Slider.Direction> direction)

Binds the native slider direction. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
directionThe typed direction input (Value<Slider.Direction>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Slider(
value: volume,
UI.SliderDirection(direction: UnityEngine.UI.Slider.Direction.BottomToTop)
);

UI.WholeNumbers​

public static IProperty<Slider> WholeNumbers(Value<bool> enabled)

Binds whether the native slider rounds values to whole numbers. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
enabledThe typed enabled input (Value<bool>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Slider(
value: count,
minimum: 0f,
maximum: 10f,
UI.WholeNumbers(enabled: true)
);

UI.ScrollbarDirection​

public static IProperty<Scrollbar> ScrollbarDirection(Value<Scrollbar.Direction> direction)

Binds the native scrollbar direction. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
directionThe typed direction input (Value<Scrollbar.Direction>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.Scrollbar(
value: position,
UI.ScrollbarDirection(
direction: UnityEngine.UI.Scrollbar.Direction.BottomToTop
)
);

UI.ScrollAxes​

public static IProperty<ScrollRect> ScrollAxes(Value<bool> horizontal, Value<bool> vertical)

Binds horizontal and vertical scroll-axis enablement. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
horizontalThe typed horizontal input (Value<bool>); literals and supported reactive adapters follow this overload's documented behavior.
verticalThe typed vertical input (Value<bool>); literals and supported reactive adapters follow this overload's documented behavior.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.ScrollView(
content: content,
UI.ScrollAxes(horizontal: false, vertical: true)
);

UI.ScrollPosition​

public static IProperty<ScrollRect> ScrollPosition(Value<Vector2> position)

Binds native normalized scroll position; layout and movement settings remain native ScrollRect behavior. Literal values apply once; typed reactive values and Value-wrapped getters stay bound for the active ownership scope.

ParameterMeaning
positionTyped immediate position or reactive native position, as specified by this overload.

Returns: A compatible property operation to apply within a live ownership scope.

Ownership: Construct and apply declarations on Unity's main thread within UI.Mount, UI.Root or a live Scope.Run. Literal assignments occur once; reactive observers and handlers end with their owning scope.

UI.ScrollView(
content: content,
UI.ScrollPosition(position: new UnityEngine.Vector2(x: 0, y: 1))
);