/// <summary> /// 更新。 /// </summary> /// <returns>动作状态。</returns> public override ActionState Update() { bool isrunnig = false; //是否有运行中的动作 int sn = 0; //成功的动作数量 int fn = 0; //失败的动作数量 for (int i = 0; i < m_Children.Count; ++i) { Action act = m_Children[i]; if (act.Run) { ActionState state = act.Update(); if (state == ActionState.Running) { isrunnig = true; } else if (state == ActionState.Succeed) { sn = sn + 1; } else if (state == ActionState.Failed) { fn = fn + 1; } } } //只要有一个是运行状态则返回运行状态。 if (isrunnig) { return(ActionState.Running); } //没有成功或失败的 if (sn + fn <= 0) { return(ActionState.Stop); } //一个成功则返回成功 if (m_Mode == ParallelMode.Or) { return(sn > 0 ? ActionState.Succeed : ActionState.Failed); } //一个失败则返回失败 if (m_Mode == ParallelMode.And) { return(fn > 0 ? ActionState.Failed : ActionState.Succeed); } return(ActionState.Stop); //理论上不会走到这一句 }