/// <summary> /// 单线程异步委托 /// </summary> /// <param name="waitTime">等待时间,这里是ms</param> /// <param name="callback">回调</param> public void WaitTimeAsyncCallback(int waitTime, Action callback) { var dispatchTime = Utility.Time.MillisecondNow() + waitTime; CoroutineStruct corou = new CoroutineStruct(dispatchTime, callback); corouSet.Add(corou); }
/// <summary> /// Start a code coroutine process /// </summary> /// <param name="itorFunc"></param> public bool StartProcess(IEnumerator itorFunc) { CoroutineStruct value; if (mCoroutineDict.TryGetValue(itorFunc, out value)) { Debug.LogWarningFormat("<color=magenta>[CodeRunner]Process {0} has already started. Need to stop before restart.</color>", itorFunc); StopCoroutine(value.coroutine); } Debug.LogFormat("<color=green>[CodeRunner]Start process {0}.</color>", itorFunc); value = new CoroutineStruct(StartCoroutine(SimulateCoroutine(itorFunc)), false); mCoroutineDict[itorFunc] = value; return(true); }
/// <summary> /// Resume a code coroutine process /// </summary> /// <param name="itorFunc"></param> /// <returns></returns> public bool ResumeProcess(IEnumerator itorFunc) { if (!mCoroutineDict.ContainsKey(itorFunc)) { Debug.LogWarningFormat("<color=magenta>[CodeRunner]Resume process {0}, but it was not started.</color>", itorFunc); return(false); } Debug.LogFormat("<color=green>[CodeRunner]Resume process {0}.</color>", itorFunc); CoroutineStruct value = mCoroutineDict[itorFunc]; value.paused = false; mCoroutineDict[itorFunc] = value; return(true); }