Пример #1
0
    /// <summary>
    /// 转换状态
    /// </summary>
    /// <param name="aiRule"></param>
    public void PerformRule(AIrule aiRule)
    {
        if (aiRule == AIrule.NullAIrule)
        {
            Debug.LogError("PerformRule Error:NullAIrule");
            return;
        }

        AIEvent aiEvent = currentAIFSM.GetOutputState(aiRule);

        if (aiEvent == AIEvent.NullEvent)
        {
            Debug.LogError("PerformRule Error:NullEvent");
            return;
        }

        currentAIEvent = aiEvent;
        for (int i = 0; i < aiFSMs.Count; i++)
        {
            if (aiFSMs[i].AiEvent == currentAIEvent)
            {
                currentAIFSM.DoBeforeLeaving();
                currentAIFSM = aiFSMs[i];
                currentAIFSM.DoBeforeEntering();
                return;
            }
        }
    }