protected bool EnQueue(BaseAction _action) { if (actionsQueue.Count <= 0) { actionsQueue.Add(_action); _action.OnExit = OnActionExit; return(true); } //确认队列内是否已经包含该动作 for (int i = actionsQueue.Count - 1; i >= 0; i--) { BaseAction act = actionsQueue[i]; if (act != null && act.actionType == _action.actionType) { return(false); } } //删除优先级较小的 for (int i = actionsQueue.Count - 1; i >= 0; i--) { BaseAction act = actionsQueue[i]; if (act == null || act.Priority <= _action.Priority) { actionsQueue.RemoveAt(i); if (act != null && act.running) { act.OnExit = null; act.Exit(); } } } actionsQueue.Add(_action); _action.OnExit = OnActionExit; return(true); }