Назначение: Базовый абстрактный класс условия перехода для StateMachine. Содержит единственный метод Evaluate() → bool. Три готовые реализации: BoolStateCondition, FloatStateCondition, EventStateCondition.
Для новых проектов рекомендуется
StatePredicate— более гибкая замена.
| Метод | Описание |
|---|---|
abstract bool Evaluate() |
Проверить условие. true — переход разрешён. |
Возвращает хранимое bool-значение.
| Поле | Описание |
|---|---|
| Value | bool — значение, которое вернёт Evaluate(). Можно менять из кода или Inspector. |
Сравнивает float-значение с порогом.
| Поле | Описание |
|---|---|
| Value | float — левая часть сравнения. |
| Comparison | Оператор: >, <, >=, <=, ==, !=. |
| Threshold | float — правая часть сравнения. |
Условие через UnityEvent: при Evaluate() вызывается OnEvaluate, слушатель задаёт результат через SetResult(bool).
| Поле | Описание |
|---|---|
| On Evaluate | UnityEvent — вызывается при проверке условия. |
| Метод | Описание |
|---|---|
void SetResult(bool result) |
Задать результат для текущей проверки. Вызывается из слушателя OnEvaluate. |
- В
StateMachineBehaviourдобавить переход сFloatStateCondition. - Привязать поле Value к здоровью персонажа.
- Задать Comparison =
LessThan, Threshold =0. - Переход сработает, когда здоровье опустится ниже нуля.
var condition = new FloatStateCondition();
condition.Value = player.Health;
condition.Comparison = ComparisonType.LessThan;
condition.Threshold = 0f;
if (condition.Evaluate())
stateMachine.ChangeState<DeadState>();- StatePredicate — более мощная альтернатива
- StateMachine
- ← StateMachine