// Use this for initialization void Awake() { // initialize state machine ai_state = new StateMachine<System.Object>(); ai_state.AddState(ai_states.none, () => { }); ai_state.AddState(ai_states.idle, OnIdleState); ai_state.AddState(ai_states.trace, OnTracingState); ai_state.AddState(ai_states.attack, OnAttackState); ai_state.AddState(ai_states.special_0, OnSpecial0State); ai_state.SetInitState(ai_states.idle); }
// this should be called before its sibling public virtual void Start() { // initialize state machine unit_state = new StateMachine<unit_states>(); unit_state.AddState(unit_states.none, () => { }); unit_state.AddState(unit_states.act, UnitStateAct); unit_state.AddState(unit_states.actpause, UnitStateActPause); unit_state.SetInitState(unit_states.act); // add aura GameObject aura_object = (GameObject)Instantiate(Resources.Load("Prefabs/EnemyAura"), transform.position, new Quaternion()); aura = aura_object.GetComponent<EnemyAttackAura>(); aura.SetOwner(this); }