/// <summary>
 /// Unregister a timer so it no longer receives ticks.
 /// </summary>
 /// <param name="timer"></param>
 public static void UnregisterTimer(IQuestTimer timer)
 {
     if (!Application.isPlaying)
     {
         return;
     }
     instance.Unregister(timer);
 }
 /// <summary>
 /// Unregisters a timer from this instance of QuestTimerManager.
 /// This method is usually called implicitly by the static method
 /// QuestTimerManager.UnregisterTimer.
 /// </summary>
 public void Unregister(IQuestTimer timer)
 {
     if (timer == null || !m_timers.Contains(timer))
     {
         return;
     }
     m_timers.Remove(timer);
     if (m_timers.Count <= 0)
     {
         // No more timers, so stop coroutine:
         StopAllCoroutines();
     }
 }
 /// <summary>
 /// Registers a timer with this instance of QuestTimerManager.
 /// This method is usually called implicitly by the static method
 /// QuestTimerManager.RegisterTimer.
 /// </summary>
 public void Register(IQuestTimer timer)
 {
     if (timer == null || m_timers.Contains(timer))
     {
         return;
     }
     m_timers.Add(timer);
     if (m_timers.Count == 1)
     {
         // First timer, so start coroutine:
         StartCoroutine(TimerCoroutine());
     }
 }