void FixedUpdate()
        {
            if (timersDic.Count == 0)
            {
                return;
            }
            List <int> overTimers = new List <int> ();
            var        e          = timersDic.GetEnumerator();
            TimerItem  timerItem  = null;

            while (e.MoveNext())
            {
                timerItem = e.Current.Value;
                timerItem.UpdateTime(Time.fixedDeltaTime);
                if (timerItem.over)
                {
                    overTimers.Add(timerItem.Id);
                }
            }

            overTimers.ForEach(timerId =>
            {
                if (timersDic.ContainsKey(timerId))
                {
                    timersDic.Remove(timerId);
                }
            });
        }
        public void Remove(Action handle)
        {
            int timerId = handle.GetHashCode();

            if (timersDic.ContainsKey(timerId))
            {
                TimerItem timerItem = timersDic[timerId];
                if (timerItem != null)
                {
                    timerItem.over = true;
                }
            }
        }
 public TimerItem Add(float eTime, Action handle)
 {
     if (timersDic.ContainsKey(handle.GetHashCode()) == false)
     {
         TimerItem timerItem = new TimerItem(eTime);
         timersDic.Add(handle.GetHashCode(), timerItem);
         timerItem.mIntervalHandler = handle;
         return(timerItem);
     }
     else
     {
         return(timersDic[handle.GetHashCode()]);
     }
 }