public void Update() { for (int i = m_lstRunningTimer.Count - 1; i >= 0; i--) { ITimerBase timer = m_lstRunningTimer[i]; if (timer.IsRunning) { timer.Update(); } else { m_lstRemoveTmp.Add(i); } } if (m_lstRemoveTmp.Count > 0) { for (int i = m_lstRemoveTmp.Count - 1; i >= 0; i--) { int idx = m_lstRemoveTmp[i]; ITimerBase timer = m_lstRunningTimer[idx]; m_lstRunningTimer.RemoveAt(idx); timer.Recycle(); } m_lstRemoveTmp.Clear(); } }
// 停止一个定时器 public void RemoveTimer(ITimerBase timer) { int idx = m_lstRunningTimer.IndexOf(timer); if (idx >= 0) { m_lstRunningTimer.RemoveAt(idx); } }
// 运行一个定时器 public void AddTimer(ITimerBase timer) { if (m_lstRunningTimer.IndexOf(timer) >= 0) { GameLog.Log("已经存在的定时器"); return; } m_lstRunningTimer.Add(timer); }