ImtStateMachine

  • Sinoa/IceMilkTea - StateMachine.cs

    sample
using IceMilkTea.Core;
using UnityEngine;
 
public class Hoge : MonoBehaviour {
    private enum StateEventId {
        Event,
    }
 
    private ImtStateMachine<Hoge> stateMachine;
    private int fuga = 1;
 
    private void Awake() {
        stateMachine = new ImtStateMachine<Hoge>(this);
        stateMachine.AddTransition<AScene, BScene>((int) StateEventId.Event);
        stateMachine.SetStartState<AScene>();
    }
 
    public void Start() {
        this.UpdateAsObservable()
            .Subscribe(_ => stateMachine.Update());
    }
 
    private class AScene : ImtStateMachine<Hoge>.State {
        protected internal override void Enter() {
            var fuga = Context.fuga;
        }
 
        protected internal override void Exit() {
        }
    }
 
    private class BScene : ImtStateMachine<Hoge>.State {
        protected internal override void Enter() {
        }
 
        protected internal override void Exit() {
        }
    }
}