public static void UpdateAction(ref LCharacterAction curAction, List <LCharacterAction> actions, LCharacterInterface character, LChatacterInformationInterface information) { if (pauseActions) { return; } if (null != curAction) { if (curAction.isFinish(character, information)) { //if (character.IsAI()) // Debug.Log("end by self" + curAction.ToString()); curAction.endAction(character, information); curAction = null; } } LCharacterAction oldAciton = curAction; for (int i = 0, c = actions.Count; i < c; i++) { var a = actions[i]; if ((curAction == null || a.GetPriority() > curAction.GetPriority()) && a.isQualified(curAction, character, information)) { if (character.IsAI()) { if (null != curAction) { Debug.Log(curAction.ToString() + " " + curAction.priority + " " + a.ToString() + " " + a.priority); } } curAction = a; } } if (curAction != oldAciton || (null == curAction)) { if (null != oldAciton) { oldAciton.endAction(character, information); } curAction.beginAction(character, information); } if (null != curAction) { curAction.doAction(character, information); } //beginAction }