CalmUI
Blueprint

Update Game Values

Set a player's name or score from Blueprint and check the result.

The Store holds the game values your UI displays. For example, Unreal writes the player's name into player.name, and a component reads that value for a label.

Prepare a field

  1. In Studio's Store → State Groups, create or select a group with Store Path player, a string field named name, and an integer field named score. See Define game data.
  2. Save and wait for the connected Unreal package to update.
  3. In Blueprint, create two Calm Ui Store Field Reference variables named PlayerNameField and ScoreField (C++ name: FCalmUiStoreFieldReference).
  4. Compile, select each variable, and choose its package and Field Path (player.name for PlayerNameField, player.score for ScoreField) in the default values.
  5. Keep the Player Controller that opens the View; the Store nodes use it directly.

Write one value

Open CalmUI Screen Completed calling Set CalmUI String with PlayerNameField and value Alex, a Branch on its Return Value, and Get CalmUI String feeding Print String
From Completed, call Set CalmUI String, check Return Value, then read the field back with Get CalmUI String.

From Open CalmUI Screen → Completed, call Set CalmUI String:

PinValue
Player ControllerThe same controller that opened the View
FieldPlayerNameField
ValueAlex

The compact setter saves one value immediately. Check Return Value before continuing.

Call Get CalmUI String with the same Player Controller and Field. Check its Return Value, then print its Value: it should be Alex. A label updates only if its component reads that Store field; creating a field alone does not add text to a View. Studio provides binding examples beside each field.

Use Set CalmUI Int for whole numbers, Set CalmUI Float for decimal values, and Set CalmUI Bool for true/false. The setter must match the field's type.

Save several changes together

When a screen must receive several values together, use:

Begin CalmUI Store Batch, Set CalmUI String, Set CalmUI Int, then a Branch choosing Commit CalmUI Store Batch or Rollback CalmUI Store Batch
Begin CalmUI Store Batch → Set CalmUI String → Set CalmUI Int → Commit (or Rollback when a setter fails).

The custom event ApplyProfile calls Begin CalmUI Store Batch, then Set CalmUI String with PlayerNameField, then Set CalmUI Int with ScoreField. A Branch on the combined result calls Commit CalmUI Store Batch on true or Rollback CalmUI Store Batch on false.

Choose an existing string field and integer field for those setters: this example reuses PlayerNameField (player.name) and ScoreField (player.score) from Prepare a field. Check each Return Value. If a setter fails, call Rollback CalmUI Store Batch instead of Commit; this cancels the pending changes. Check Commit's result too.

After a successful commit, components that read the changed fields update. Change events let your Blueprint respond as well.

If a value does not change

  • Confirm the package finished loading before the write.
  • Check the field reference's package and field selection.
  • Check that the setter matches the field's type.
  • Check the setter's Return Value and inspect Get CalmUI Store Error for Store errors. An invalid reference can fail before the Store has an error to report.
  • Every rejected write, batch commit, keyed-array op, or package contract change also logs LogCalmUI: Warning: Store rejected <Op> at '<Path>': <Reason> (throttled to once per second per op/path pair, so a failing per-tick write does not spam the log). Call Get Last CalmUI Store Diagnostic for the same "path: reason" text from Blueprint; unlike Get CalmUI Store Error, it keeps the most recent rejection even after a later successful write.
  • If a batch is open, make sure Begin succeeded and Commit or Rollback ran.
  • In split-screen, use the same player's controller for the View and its Store.

For objects and lists, see Store from Blueprint.

On this page