Что это: StateMachineBehaviour<TState> — generic MonoBehaviour-обёртка над StateMachine<TState> для кодовых state machine сценариев. Она управляет жизненным циклом состояний, может загружать StateMachineData, но не является тем же самым API, что StateMachineBehaviourBase. Файл: Scripts/StateMachine/StateMachineBehaviour.cs, пространство имён: Neo.StateMachine.
Как использовать:
- Наследуйте свой компонент от
StateMachineBehaviour<IState>или другого совместимого типа состояний. - Для code-first сценария задайте
initialStateTypeNameили вызывайтеChangeState<T>(). - Для no-code/state-data сценария задайте
stateMachineData. - Если нужен inspector-driven runtime API с событиями и runtime-свойствами, используйте StateMachineBehaviourBase.
MonoBehaviour версия State Machine для использования на GameObject. Автоматически вызывает Update, FixedUpdate и LateUpdate для текущего состояния.
Neo.StateMachine
Assets/Neoxider/Scripts/StateMachine/StateMachineBehaviour.cs
В меню Unity: Component > Neoxider > Tools > StateMachineBehaviour
initialStateTypeName- тип начального состояния (для кода)enableDebugLog- включить логирование переходовshowStateInInspector- показывать текущее состояние в инспектореstateMachineData- конфигурация через ScriptableObject (опционально)autoEvaluateTransitions- автоматически оценивать переходы каждый кадр
StateMachine— доступ к экземпляруStateMachine<TState>.CurrentState— текущее состояние типаTState.PreviousState— предыдущее состояние типаTState.ChangeState<T>()— смена состояния по типу.ChangeState(string stateName)— смена состояния по имени изStateMachineData.RegisterTransition(StateTransition transition)— регистрация перехода.LoadFromStateMachineData()— загрузка конфигурации изStateMachineData.
В этой странице раньше были перечислены runtime-свойства и inspector events, которые на самом деле относятся к StateMachineBehaviourBase.
В StateMachineBehaviour<TState> нет:
CurrentStateNamePreviousStateNameCurrentStateElapsedTimeStateChangeCountHasCurrentState- inspector-событий
On Initialized,On State Entered,On State Exited,On State Changed,On Transition Evaluated - runtime-кнопок
Reload Data,Evaluate Now,Go To Initial State,Change State
Для этого используйте StateMachineBehaviourBase.
Сменить состояние по типу.
ChangeState<IdleState>();Сменить состояние по имени (при использовании StateMachineData).
ChangeState("Idle");Загрузить конфигурацию из StateMachineData.
LoadFromStateMachineData();Конфигурация в State Machine Data, условия переходов через Neoxider Condition. Пошаговая инструкция: NoCode_StateMachine_Usage.md.
См. основной README.md