Пример #1
0
    /// <summary>切换状态</summary>
    /// <param name="newState">新状态</param>
    public void ChangeState(RoleState newState)
    {
        if (CurrRoleCtrl.CurrRoleType == RoleType.Monster)
        {
            //Debug.Log(newState.ToString());
        }
        //因为休闲 战斗 都有多种状态 所以此处需要排除 休闲 攻击状态(因为可能需要从普通休闲切换到战斗休闲及技能切换)
        if (CurrRoleStateEnum == newState && CurrRoleStateEnum != RoleState.Idle && CurrRoleStateEnum != RoleState.Attack)
        {
            return;
        }
        //调用以前状态的离开方法
        if (m_CurrRoleState != null)
        {
            m_CurrRoleState.OnLeave();
        }

        //更改当前状态枚举
        CurrRoleStateEnum = newState;

        //更改当前状态
        m_CurrRoleState = m_RoleStateDic[newState];

        if (CurrRoleStateEnum == RoleState.Idle)
        {
            //给当前待机状态赋值
            CurrIdleState = ToIdleState;
        }

        //调用新状态的进入方法
        m_CurrRoleState.OnEnter();
    }
Пример #2
0
    /// <summary>
    ///  切换状态
    /// </summary>
    /// <param name="newState">新的状态</param>
    public void ChangeState(RoleStateType newState)
    {
        if (newState == RoleStateType)
        {
            return;
        }

        if (m_RoleState == null)
        {
            return;
        }
        //离开之前的状态
        m_RoleState.OnLeave();

        //将当前状态更新为新的状态
        RoleStateType = newState;

        m_RoleState = m_RoleStateDic[newState];

        //调用新状态的进入方法
        m_RoleState.OnEnter();
    }
Пример #3
0
    /// <summary>
    /// 切换状态
    /// </summary>
    /// <param name="newState">新状态</param>
    public void ChangState(RoleState newState)
    {
        if (CurrRoleStateEnum == newState)
        {
            return;
        }

        //调用以前状态的离开方法
        if (m_CurrRoleState != null)
        {
            m_CurrRoleState.OnLeave();
        }

        //更改当前状态枚举
        CurrRoleStateEnum = newState;

        //更改当前状态
        m_CurrRoleState = m_RoleStateDic[newState];

        //调入新状态的进入方法
        m_CurrRoleState.OnEnter();
    }
Пример #4
0
    public void ChangeState(RoleState nextState)
    {
        //如果在当前状态则返回,但是当前状态是Idle Attack 可以进来
        //攻击的限制条件 是否僵值, Idle 的限制条件是当前的Idle状态
        if (CurrentRoleStateEnum == nextState && CurrentRoleStateEnum != RoleState.Idle && CurrentRoleStateEnum != RoleState.Attack)
        {
            return;
        }

        //当前状态退出
        if (CurrentRoleState != null)
        {
            CurrentRoleState.OnLevel();
        }
        //替换当前状态
        CurrentRoleStateEnum = nextState;
        CurrentRoleState     = states[CurrentRoleStateEnum];
        if (CurrentRoleStateEnum == RoleState.Idle)
        {
            CurIdleType = NextIdleType;
        }
        //当前状态进入
        CurrentRoleState.OnEnter();
    }