private bool CheckState(TaskState toState) { switch (toState) { case TaskState.Init: { if (!IsOver) { RDebug.LogErrorFormat("[TaskManager] {0} -> {1} 当前状态不能切换到初始状态", _state, toState); return(false); } return(true); } case TaskState.Running: { if (_state != TaskState.Init && _state != TaskState.Paused) { return(false); } return(true); } case TaskState.Paused: { if (!IsRunning) { return(false); } return(true); } case TaskState.Stopped: { if (_state == TaskState.Running || _state == TaskState.Paused) { return(true); } return(false); } case TaskState.Finished: { if (_state == TaskState.Init || _state == TaskState.Running || _state == TaskState.Paused || _state == TaskState.Stopped) { return(true); } return(false); } default: return(false); } }
public Task Start() { if (_state != TaskState.Init) { RDebug.LogError("[TaskManager] 任务不能重复开始"); return(this); } if (!CheckState(TaskState.Running)) { return(this); } TaskManager.Instance.RegisterTask(this); _state = TaskState.Running; _InnerOnStart(); return(this); }
private void OnInit() { RDebug.Log("[TaskManager] Init"); }