public override bool Skip(DelCheckCanSkip canSkipCheck) { if (TaskStage != EM_TaskStage.OnTask) { return(true); } //不能跳过自己 if (canSkipCheck != null && !canSkipCheck(this)) { return(false); } //可以跳过自己,需要先跳过子任务 if (arrTask != null) { for (int i = 0; i < arrTask.Length; i++) { //有一个子任务不能跳过 if (arrTask[i] != null && !arrTask[i].Skip(canSkipCheck)) { return(false); } } } //全跳过 OnSkip(); OnLeave(); return(true); }
public override bool Skip(DelCheckCanSkip canSkipCheck) { if (TaskStage != EM_TaskStage.OnTask) { return(true); } //不能跳过自己 if (canSkipCheck != null && !canSkipCheck(this)) { return(false); } //可以跳过自己,需要先跳过子任务 //队列中,先前已经完成的任务stage不是OnTask,直接return true //当前执行中的任务跳过后会调用完成回调OnChildTaskFinish,开启后面的任务 //所以每次for循环一次,当前任务也会跟着切换,直到无法跳过,或者结束 if (arrTask != null) { for (int i = 0; i < arrTask.Length; i++) { //有一个子任务不能跳过 if (arrTask[i] != null && !arrTask[i].Skip(canSkipCheck)) { return(false); } } } //全跳过 OnSkip(); OnLeave(); return(true); }
/// <summary> /// 跳过任务 /// </summary> /// <param name="canSkipCheck">检查能不能跳过的委托</param> /// <returns></returns> public virtual bool Skip(DelCheckCanSkip canSkipCheck) { if (TaskStage != EM_TaskStage.OnTask) { return(true); } if (canSkipCheck == null || canSkipCheck(this)) { //判定通过 OnSkip(); OnLeave(); return(true); } else { return(false); } }
public bool Skip(DelCheckCanSkip canSkipCheck) { return(CurTask?.Skip(canSkipCheck) ?? true); }