Exemplo n.º 1
0
        void Update()
        {
            if (isPaused)
            {
                return;
            }

            while (timersToBeCreated.Count > 0)
            {
                timers.AddSorted(timersToBeCreated.Dequeue());
            }

            while (timersToBeDestroyed.Count > 0)
            {
                Timer timer = timersToBeDestroyed.Dequeue();
                TimerPool.Push(timer);
                timers.Remove(timer);
            }

            currentTime += Time.deltaTime;

            for (int i = timers.Count - 1; i >= 0; i--)
            {
                if (timers[i].GoalTime > currentTime)
                {
                    break;
                }

                timers[i].Invoke();
                ReleaseTimer(i);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 回收一个指定索引的计时器到对象池。
 /// </summary>
 /// <param name="i">计时器的索引</param>
 private static void ReleaseTimer(int i)
 {
     ResetTimer(timers[i]);
     TimerPool.Push(timers[i]);
     timers.RemoveAt(i);
 }