advanced
Finite State Machine
Clean, extensible state machine for AI, player states, and game flow. Uses ScriptableObject states.
Features
ScriptableObject-based state definitions
Clean enter/execute/exit lifecycle
Conditional transitions with priorities
Debug visualization in editor
AI state machine variant included
Works with any MonoBehaviour
Included Scripts
/state-machine/
StateMachine.cs
State.cs
StateTransition.cs
AIStateMachine.cs
Setup Guide
1
Import all scripts
2
Create State ScriptableObjects for each state
3
Define transitions between states
4
Attach StateMachine to your character
5
Assign initial state and transition rules
Code Preview
C#
// State.cs - Base state class
public abstract class State : ScriptableObject
{
public abstract void OnEnter(StateMachine machine);
public abstract void OnExecute(StateMachine machine);
public abstract void OnExit(StateMachine machine);
}
// StateMachine.cs - Core state machine
public class StateMachine : MonoBehaviour
{
[SerializeField] private State initialState;
public State CurrentState { get; private set; }
public void TransitionTo(State newState) { /* ... */ }
}