CalmUI
Actions

Button Actions

Send a request from a UI button to your game's Blueprint or C++ code.

An action connects a UI interaction to game code. For example, clicking Exit sends MainMenu.Exit; your Blueprint receives it and calls Quit Game. Clicking Buy could send an item name; your game checks the price and inventory.

Create and use an action

  1. Open Store → Action Contracts in Studio. This panel lists the requests your UI can send.
  2. Click + New, choose a Group and Action name, then Save.
  3. In the View source, type / inside a button's opening tag and choose Click → Action Contract. Select your action.
  4. Save the View and wait for its Unreal package to update.
  5. Set up the response in Blueprint or C++.

For group MainMenu and name Exit, the button binding is:

<button @click="$action('MainMenu.Exit')">Exit</button>

No component script is needed for this direct connection. The action must exist in Studio before you use its name in the button.

Send information with the request

An action's Payload is the extra data sent with it. For example, define a required string field saveId on MainMenu.Continue, then use:

<button @click="$action('MainMenu.Continue', { saveId: 'slot-1' })">Continue</button>

CalmUI rejects missing required fields, wrong value types, and undeclared fields. An Exit action can have no fields at all.

Where the response runs

Studio Preview lets you exercise the UI, but it does not execute Unreal gameplay. Run the game to test your Blueprint response. The compact Listen for CalmUI Action node takes the same Player Controller that opened the View. Advanced shared subscriptions and events use that player's subsystem.

Your game decides what the request does and writes changed values back to the Store. For multiplayer, your game must also send any required request to the server and check it there; a CalmUI action is local to the player.

On this page