videojuegos unity máquinas multicapa maquinas maquina machine jerárquica inteligencia estados estado artificial c# .net design-patterns finite-automata fsm

unity - state machine c#



¿C#incluye máquinas de estados finitos? (8)

Recientemente leí sobre la biblioteca boost::statechart (máquinas de estados finitos) y me encantó el concepto.

¿Tiene C # un mecanismo similar? ¿O puede implementarse utilizando un patrón de diseño específico?




Escribí una biblioteca de código abierto llamada YieldMachine que aprovecha los bloques de iteradores para simplificar la escritura de las máquinas de estado.

Lo expliqué con más detalle en esta respuesta .


Las cosas que se acercan a las FSM son flujos de trabajo en .NET 3.5, sin embargo, los flujos de trabajo no son exactamente FSM.

El poder de usar FSM es que puede crearlos explícitamente en su código, teniendo menos posibilidades de crear errores. Además, por supuesto, algunos sistemas son FSM por naturaleza, por lo que es más natural codificarlos así.


Mantengo un proyecto de código abierto que implementa (entre otras cosas) una máquina de estados finitos genérica para .NET. Está construido sobre QuickGraph , por lo que obtiene muchos algoritmos de análisis de gráficos de forma gratuita.

Consulte esta página para obtener más información sobre el proyecto y, específicamente, " Jolt.Automata: Finite State Machines " para obtener más información sobre la característica.


Sí, C # tiene bloques de iteradores que son máquinas de estado generadas por el compilador.

Si desea implementar su propia máquina de estados, puede crear implementaciones personalizadas de las IEnumerable<T> e IEnumerator<T> .

Ambos enfoques resaltan la implementación del esquema iterador en el marco .NET.


Windows Workflow Foundation (WF) que forma parte de la biblioteca de clases base en 3.0 y 3.5 incluye un diseño de flujo de trabajo de máquina de estado para administrar máquinas de estado para sus aplicaciones.

Han reescrito completamente el flujo de trabajo para la próxima versión 4.0, y las nuevas clases de WF 4.0 no son compatibles de forma nativa con las máquinas de estado, pero todas las clases 3.0 / 3.5 aún son totalmente compatibles con la versión 4.0.


Workflow Foundation (.NET 3.0) tiene un flujo de trabajo de máquina de estado. Actualmente, 4.0 no tiene exactamente lo mismo, pero definitivamente puede crear un flujo de trabajo de máquina de estado utilizando 4.0.