Example #1
0
    /*状态改变*/
    public void ChangeState(CState <entity_type> pNewState)
    {
        if (pNewState == null)
        {
            Debug.LogError("can't find this state");
        }

        if (pNewState != m_pCurrentState)
        {
            //触发退出状态调用Exit方法
            m_pCurrentState.Exit(m_pOwner);
            //保存上一个状态
            m_pPreviousState = m_pCurrentState;
            //设置新状态为当前状态
            m_pCurrentState        = pNewState;
            m_pCurrentState.Target = m_pOwner;
            //进入当前状态调用Enter方法
            m_pCurrentState.Enter(m_pOwner);
        }
    }