advanced

Finite State Machine

Clean, extensible state machine for AI, player states, and game flow. Uses ScriptableObject states.

4 scripts · 15 KB
RPGFPSGeneral Advanced AI and game flow control

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) { /* ... */ }
}

Related Systems