コード例 #1
0
        private void InitStateMachine()
        {
            IAIState state = null;

            if (_stateMachine != null)
            {
                state = _stateMachine.Current;
                _stateMachine.StateChanged -= this.OnStateChanged;
                _stateMachine = null;
            }

            switch (_stateSource)
            {
            case AIStateMachineSourceMode.SelfSourced:
                _stateMachine = TypedStateMachine <IAIState> .CreateFromComponentSource(this.gameObject);

                break;

            case AIStateMachineSourceMode.ChildSourced:
                _stateMachine = TypedStateMachine <IAIState> .CreateFromParentComponentSource(this.gameObject, false, true);

                break;
            }
            _stateMachine.StateChanged += this.OnStateChanged;
            foreach (var st in _stateMachine)
            {
                st.Init(this);
            }

            if (this.started)
            {
                if (!state.IsNullOrDestroyed() && _stateMachine.Contains(state))
                {
                    _stateMachine.ChangeState(state);
                }
                else
                {
                    _stateMachine.ChangeState((IAIState)null);
                }
            }
        }