Hierarchical Finite State Machine
A minimalist base for creating HFSMs. It does not depend on any Unity libraries, but it is structured to support updating states in some of the standard MonoBehaviour event functions (Update, LateUpdate, and FixedUpdate).