Choose the Highest-Priority Need
Goal
Use priority or utility selection when branch order should be calculated from the current situation instead of fixed from left to right.
Tree structure

How it runs
Place one evaluator directly above each single child branch, then configure it to read the variable or curve that represents that need. Disable Block During Execution on the evaluators for the responsive switching shown here. At runtime, each evaluator expands to display its current Value, so leave enough horizontal space between the branches for those values to remain readable.
The branch with the highest utility runs first. For example, Safety at 0.9, Hunger at 0.6, and Fatigue at 0.3 selects Seek Safety.

The displayed values confirm that Safety is highest, so Seek Safety is the running branch. If Hunger later rises above Safety, the Utility Selector can redirect execution to Eat. Block During Execution is enabled by default: it assigns an infinite utility to a running child and keeps that branch selected. Leave it enabled when the current branch must finish before a newly preferred branch can start.
The Utility Selector and evaluator Decorators are built in. The safety, hunger, and fatigue values and their child Actions represent game-specific behavior.
Variations
Use a Priority Selector for values that establish an order when traversal begins. Use a Utility Selector when values continue changing and may redirect execution.
Tasks used in this tree
Utility Selector, Utility Variable Evaluator and Utility Curve Evaluator in the Decorators reference, and Priority Selector.