Example #1
0
    /// <summary>
    /// 状态切换
    /// </summary>
    /// <param name="trans">条件.</param>
    public void PerformTransiton(Transition trans)
    {
        if (trans == Transition.NullTransiton)
        {
            Debug.LogError("无法执行空的转换条件");
        }
        StateID id = currenState.GetOutputState(trans);

        if (id == StateID.NullStateId)
        {
            Debug.LogWarning("当前状态" + currentStateID + "无法根据转换条件" + trans + "发生转换");
            return;
        }
        if (states.ContainsKey(id) == false)
        {
            Debug.LogError("在状态里面不存在状态" + id + ",无法进行状态转换!"); return;
        }
        FSMState state = states [id];

        //因为要发生转换所以调用当前状态的离开函数
        currenState.DoAfterLeaving();
        currenState    = state;
        currentStateID = id;
        //调用新状态的进入函数
        currenState.DobeforeEntering();
    }