Esempio n. 1
0
 void RemoveCoroutine(EditorCoroutine target)
 {
     if (null != target)
     {
         coroutines.Remove(target);
         target.Clear();
     }
 }
Esempio n. 2
0
        void OnUpdate()
        {
            float deltaTime = (float)(DateTime.Now.Subtract(previousTimeSinceStartup).TotalMilliseconds / 1000.0f);

            previousTimeSinceStartup = DateTime.Now;
            coroutines.RemoveAll(v =>  //修剪列表,引用丢失的协程一并消亡
            {
                bool eq = null == v.owner;
                if (eq)
                {
                    v.Clear();
                }
                return(eq);
            });

            if (coroutines.Count == 0)
            {
                return;
            }
            tempCoroutineList.Clear();
            tempCoroutineList.AddRange(coroutines);

            for (var i = tempCoroutineList.Count - 1; i >= 0; i--)
            {
                EditorCoroutine coroutine = tempCoroutineList[i];

                if (null != coroutine.currentYield && !coroutine.currentYield.IsDone(deltaTime))
                {
                    continue;
                }

                if (!MoveNext(coroutine))
                {
                    coroutine.Clear();
                    coroutines.Remove(coroutine);
                }
            }
        }