PrimaryButtonTag

primary-button

action-button

Description

Display a button

Components and Properties

Button

click-event

event-click

event

Event that will fire on click.

on-click

UIAction

UIAction that will fire on click.

ContentSizeFitter

horizontal-fit

FitMode

How the width is controlled.

vertical-fit

FitMode

How the height is controlled.

Graphic

raycast-padding

Vector4

Padding to be applied to the masking, ordered counter-clockwise (left, bottom, right, top).

raycast-target

raycast

bool

Whether or not this graphic be considered a target for raycasting.

LayoutElement

flexible-height

float

The relative amount of additional available height this layout element should fill out relative to its siblings.

flexible-width

float

The relative amount of additional available width this layout element should fill out relative to its siblings.

ignore-layout

bool

Whether or not to use layout element.

min-height

float

The minimum height this layout element should have.

min-width

float

The minimum width this layout element should have.

preferred-height

pref-height

float

The preferred height this layout element should have before additional available height is allocated.

preferred-width

pref-width

float

The preferred width this layout element should have before additional available width is allocated.

LayoutGroup

child-alignment

child-align

TextAnchor

The alignment to use for the child layout elements in the layout group.

padding

pad

int

Padding for all directions.

pad-bottom

int

Bottom padding.

pad-left

int

Left padding.

pad-right

int

Right padding.

pad-top

int

Top padding.

LocalizedTextMeshProUGUI

maintain-text-alignment

bool

Whether or not to maintain the text alignment regardless of the reading direction of the current language.

text-key

localization key

The localization key for the text to display.

RectTransform

active

bool

Whether or not the GameObject this RectTransform belongs to is active.

anchor-max

Vector2

The anchor point for the upper right corner of the rectangle defined as a fraction of the size of the parent rectangle.

anchor-max-x

float

The normalized x position in the parent RectTransform that the upper right corner is anchored to.

anchor-max-y

float

The normalized y position in the parent RectTransform that the upper right corner is anchored to.

anchor-min

Vector2

The anchor point for the lower left corner of the rectangle defined as a fraction of the size of the parent rectangle.

anchor-min-x

float

The normalized x position in the parent RectTransform that the lower left corner is anchored to.

anchor-min-y

float

The normalized y position in the parent RectTransform that the lower left corner is anchored to.

anchored-position

Vector2

Position of the rectangle’s pivot point relative to the anchors.

anchored-position-x

anchor-pos-x

float

The x position of the pivot of this RectTransform relative to the anchor reference point.

anchored-position-y

anchor-pos-y

float

The y position of the pivot of this RectTransform relative to the anchor reference point.

hover-hint

string

Text that will appear when a pointer hovers over.

hover-hint-key

localization key

The localization key used for the hover hint text.

local-scale

scale

Vector3

Scale factor applied to the object in the X, Y and Z dimensions.

name

string

The name of the GameObject.

pivot

Vector2

The location around which the rectangle rotates.

pivot-x

float

Normalized x position to rotate around.

pivot-y

float

Normalized y position to rotate around.

size-delta

Vector2

The size added to the rectangle defined by the anchors.

size-delta-x

float

The width added to the rectangle defined by the anchors.

size-delta-y

float

The height added to the rectangle defined by the anchors.

Selectable

interactable

bool

Whether or not this is interactable.

TextMeshProUGUI

font-align

align

TextAlignmentOptions

How to align the text.

all-uppercase

bool

Whether or not to make the text all uppercase.

bold

bool

Whether or not text is bold.

font-color

color

color string

Color of font.

face-color

color string

Face color of font.

font-size

float

Size of font.

italics

bool

Whether or not to italicize text.

outline-color

color string

Outline color of font.

outline-width

float

Width of font outline.

overflow-mode

TextOverflowModes

How to handle text overflow.

rich-text

bool

Whether or not to enable rich text.

strikethrough

bool

Whether or not to strikethrough text.

text

string

Text to display.

underlined

bool

Whether or not to underline text.

word-wrapping

bool

Whether or not to wrap text.

Example Usage

example.bsml

<vertical child-control-height="false">
  <horizontal bg="panel-top" pad-left="15" pad-right="15" horizontal-fit="PreferredSize">
    <text text="Buttons" align="Center" font-size="8"/>
  </horizontal>
  <horizontal horizontal-fit="PreferredSize" spacing="10">
    <primary-button text="Click!" on-click="click-btn-action"/>
    <primary-button text="Clack!" on-click="clack-btn-action"/>
  </horizontal>
  <horizontal horizontal-fit="PreferredSize" spacing="10">
    <primary-button text="Cluck!" on-click="cluck-btn-action"/>
    <primary-button text="Clock!" on-click="clock-btn-action"/>
  </horizontal>
</vertical>
using BeatSaberMarkupLanguage.Attributes;
using BeatSaberMarkupLanguage.Parser;
using BeatSaberMarkupLanguage.ViewControllers;

public class TestViewController : BSMLResourceViewController
{
    public override string ResourceName => "Path.To.Resource.example.bsml";

    [UIParams]
    private BSMLParserParams parserParams;

    [UIAction("click-btn-action")]
    private void ClickButtonAction() => Logger.log.Info("Click!");

    [UIAction("clack-btn-action")]
    private void ClackButtonAction() => Logger.log.Info("Clack!");

    [UIAction("cluck-btn-action")]
    private void CluckButtonAction() => Logger.log.Info("Cluck!");

    [UIAction("clock-btn-action")]
    private void ClockButtonAction() => Logger.log.Info("Clock!");
}