Beispiel #1
0
        /// <summary>
        /// 注册一个新的计时器,该计时器应在经过一定时间后触发一个事件。
        /// 当场景改变时,已注册的计时器将被销毁。
        /// </summary>
        /// <param name="duration">计时器启动之前要等待的时间(以秒为单位),</param>
        /// <param name="onComplete">计时器完成时触发的动作。</param>
        /// <param name="onUpdate">每次更新计时器时应触发的操作。 自计时器电流循环开始以来经过的时间(以秒为单位)。</param>
        /// <param name="isLooped">执行后计时器是否应重复。</param>
        /// <param name="useRealTime">计时器使用的是实时时间(即不受暂停,慢动作/快动作的影响)还是游戏时间(受暂停和慢动作/快动作的影响)。</param>
        /// <param name="autoDestroyOwner">将此计时器附加到的对象。 对象销毁后,计时器将到期且不执行。 这样可以避免烦人</param>
        /// <returns>一个计时器对象,使您可以检查统计信息并停止/恢复进度。</returns>
        public static DSTimer Register(float duration, Action onComplete, Action <float> onUpdate = null,
                                       bool isLooped = false, bool useRealTime = false, MonoBehaviour autoDestroyOwner = null)
        {
            // 创建一个管理器对象以更新所有计时器(如果尚不存在)。
            if (DSTimer._manager == null)
            {
                TimerManager managerInScene = Object.FindObjectOfType <TimerManager>();
                if (managerInScene != null)
                {
                    DSTimer._manager = managerInScene;
                }
                else
                {
                    GameObject managerObject = new GameObject {
                        name = "TimerManager"
                    };
                    DSTimer._manager = managerObject.AddComponent <TimerManager>();
                }
            }

            DSTimer dsDSTimer =
                new DSTimer(duration, onComplete, onUpdate, isLooped, useRealTime, autoDestroyOwner);

            DSTimer._manager.RegisterTimer(dsDSTimer);
            return(dsDSTimer);
        }
Beispiel #2
0
 /// <summary>
 /// 重置计算器
 /// </summary>
 public static void Resume(DSTimer dsDSTimer)
 {
     if (dsDSTimer != null)
     {
         dsDSTimer.Resume();
     }
 }
Beispiel #3
0
 /// <summary>
 /// 暂停计时器
 /// </summary>
 public static void Pause(DSTimer dsDSTimer)
 {
     if (dsDSTimer != null)
     {
         dsDSTimer.Pause();
     }
 }
Beispiel #4
0
 /// <summary>
 /// 取消计时器
 /// </summary>
 public static void Cancel(DSTimer dsDSTimer)
 {
     if (dsDSTimer != null)
     {
         dsDSTimer.Cancel();
     }
 }
Beispiel #5
0
 /// <summary>
 /// 将计时器附加到该行为。 如果在计时器完成之前行为已被破坏,例如 通过场景更改,计时器回调将不会执行。
 /// </summary>
 public static DSTimer AttachTimer(this MonoBehaviour behaviour, float duration, Action onComplete,
                                   Action <float> onUpdate = null, bool isLooped = false, bool useRealTime = false)
 {
     return(DSTimer.Register(duration, onComplete, onUpdate, isLooped, useRealTime, behaviour));
 }
Beispiel #6
0
 public void RegisterTimer(DSTimer dsDSTimer)
 {
     this._timersToAdd.Add(dsDSTimer);
 }