1. Add PlayerHealth

Select the player root GameObject and add the PlayerHealth component.

Wire the HUD in the Inspector:

See Health for the full event reference.

2. Add PlayerStamina

Add PlayerStamina to the same GameObject.

Wire the HUD:

See PlayerStamina for the full event and method reference.

3. Add ActiveEffectsController

Add ActiveEffectsController to the same GameObject. No Inspector fields need to be filled — the controller wires itself to the other player components at runtime and tracks timed stat effects automatically.

See ActiveEffectsController for details on how timed effects are tracked and reverted.

4. Add execution subscribers (optional)

IExecutionSuscriber components placed on the player's root GameObject or any of its children are auto-discovered by PlayerController during initialization. Their Execute() method is called every time the player executes an instruction step — no manual wiring needed.

Common uses on the player:

// PlayerController.Initialize() — runs automatically at level start
IExecutionSuscriber[] suscribers = GetComponentsInChildren<IExecutionSuscriber>();
foreach (IExecutionSuscriber s in suscribers)
    OnExecute += s.Execute;
ℹ️
Instructions access health and stamina through ctx.player.health and ctx.player.stamina. You do not need to hold a manual reference — the ExecutionContext exposes them automatically.