UniState is a modern, high-performance, scalable state machine package for Unity. It can serve as a core architectural pattern or be used to address specific tasks.
Performance: optimized for minimal runtime allocations, see performance section for details.
Scalability: memory allocations happen only on demand, performance does not degrade with the number of states and state machines.
Modularity: designed to define states, substates, and state machines in an isolated way. States can be easily replaced or removed without hidden effects even in big projects.
Asynchronous: modern asynchronous API with async-await and UniTask
Reliability: allows you to define global error handling at the state machine level, and guarantees that all resources will be disposed.
Simplicity: if you use state base you have to implement only one method for fast start.
Flexibility: everything in framework core is an abstraction. Can be replaced with your own implementation,
see state creating and creating a state machine sections for details.
Testability: UniState is designed to be testable. All abstractions use interfaces that can be easily mocked with NSubstitutes or any other framework. States can be run separately for testing purposes.
DI friendly: has integration with most popular DI containers