Stacked Action
Use a Stacked Action to group short commands into one node while keeping meaningful phases and long-running work visible as standalone nodes.

Understand Action task choices
Many GameObject-facing Actions use the TaskObject model. TaskObject is not a separate node that you add: choose the Action that describes what the agent should do, then configure its GameObject, Component, constants, or Shared Variables.
Start with a built-in Action when it already describes the operation. Use a component method for a small command that already exists in project code. Create a custom Action when the operation has a multi-frame lifecycle, needs reusable validation, or deserves a clearer project-specific name.
Create a Stacked Action

- Open the Behavior Tasks selector and add Stacked Action.
- Select the node and choose Add Task in the Task Inspector.
- Add each built-in Action or compatible component method that belongs to the same visible step.
- Drag rows to reorder them. Right-click a row to rename, replace, enable, disable, copy, duplicate, or remove it.
- Choose Sequence when every Action must succeed in order. Choose Selector when the stack should try alternatives until one succeeds.
The stack stops at the first relevant Sequence failure or Selector success. A contained Action that returns Running keeps the Stacked Action active until that Action finishes or the branch is interrupted.
Choose a standalone Action

Use a standalone node when the Action remains Running, needs a Decorator or separate connection, may be interrupted independently, or represents an important phase that should be visible at a glance. Wait, Subtree Reference, and event-related responses are common examples.
As a rule, group implementation details but keep decisions and meaningful phases visible. If a stack is difficult to debug, move one row to a standalone node temporarily so its runtime status can be inspected independently.
Use a component method as an Action
A compatible Component method can become an Action without a separate task class. This is useful for a focused command such as OpenDoor, PlayAlert, or SetDestination.
- Select a Stacked Action, or add a standalone Action.
- Choose Add Task in the Task Inspector.
- Find the Component type and select the method by its name and parameter list.
- Assign the target GameObject. Leave it at Self only when the Component is on the same GameObject as the behavior tree.
- Enter constants for branch-owned values, or select Shared Variables for values supplied by other tasks.
Behavior Designer selects the matching delegate task automatically. Each method parameter appears in the Inspector, and a compatible return value can be stored in a Shared Variable.

For example, FindCover(GameObject threat) can read a Shared GameObject and store its returned position in a Shared Vector3. A later movement task can consume that result.

Keep a component-method Action small and predictable. A method that starts work lasting several updates is easier to understand as a custom Action with a visible Running state and an explicit interruption rule.
Verify the workflow
In Play Mode, confirm the Action targets the intended GameObject, receives current Shared Variable values, and reaches the expected status. For a returned value, inspect the destination Shared Variable before the next Action reads it.