/// <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; } } }