public TimerTask(float delayTime, TimerTaskRunner runner, int loopCount, float loopDuration #if DEBUG_PERFORMANCE_TRACE , string memberName = null , string path = null , int sourceLineNumber = default(int) #endif ) { Init(delayTime, runner, loopCount, loopDuration #if DEBUG_PERFORMANCE_TRACE , memberName , path , sourceLineNumber #endif ); }
/// <summary> /// 将当前Timers重置到刚创建出来的状态 /// </summary> public virtual void Clear() { _fun = null; _runner = null; Running = false; Stop = false; Paused = false; followTargetType = eFollowTargetType.None; target = null; target2 = null; followTargetMode = FollowTargetMode.TargetDisactiveDoStop; _delayTime = 0; _loopDuration = 0; _loopCount = 0; IgnoreTimeScale = false; _savedDelayTime = 0; _savedLoopCount = 0; _savedLoopDuration = 0; #if DEBUG_PERFORMANCE_TRACE stackInfo = null; #endif if (addedUpdateListener) { TimerTaskManager.Instance.RemoveUpdateTimer(this); } addedUpdateListener = false; SavedParam1 = null; SavedParam2 = null; SavedParam3 = null; SavedParam4 = null; }
/// <summary> /// 初始化,如果调用Clear再调用Init等价于创建一个新的对象 /// </summary> /// <param name="delayTime"></param> /// <param name="fun"></param> /// <param name="loopCount"></param> /// <param name="loopDuration"></param> /// <returns></returns> public void Init(float delayTime, TimerTaskRunner runner, int loopCount, float loopDuration #if DEBUG_PERFORMANCE_TRACE , string memberName = null , string path = null , int sourceLineNumber = default(int) #endif ) { _savedDelayTime = delayTime; //至少一次 _savedLoopCount = Mathf.Clamp(loopCount, 1, int.MaxValue); _savedLoopDuration = loopDuration; _fun = null; _runner = runner; #if DEBUG_PERFORMANCE_TRACE stackInfo = $"{path} : {memberName}:Line({sourceLineNumber})"; #endif DoReset(false); }
public void Init(bool nextFrame, System.Action fun, int loopCount, float loopDuration #if DEBUG_PERFORMANCE_TRACE , string memberName = null , string path = null , int sourceLineNumber = default(int) #endif ) { _savedDelayTime = 0.001f; _savedNextFrame = nextFrame; //至少一次 _savedLoopCount = Mathf.Clamp(loopCount, 1, int.MaxValue); _savedLoopDuration = loopDuration; _fun = fun; _runner = null; #if DEBUG_PERFORMANCE_TRACE stackInfo = $"{path} : {memberName}:Line({sourceLineNumber})"; #endif DoReset(false); }
public static TimerTask TimerStart(float delay, TimerTaskRunner runner, MonoBehaviour followtarget, MonoBehaviour followtarget2, FollowTargetMode followMode = FollowTargetMode.TargetDisactiveDoStop, bool ignoreTimeScale = true, int loopCount = 1, float loopduration = 0f #if DEBUG_PERFORMANCE_TRACE , [CallerMemberName] string memberName = null , [CallerFilePath] string path = null , [CallerLineNumber] int sourceLineNumber = default(int) #endif ) { var task = Pool.GetATimer(); task.Init(delay, runner, loopCount, loopduration #if DEBUG_PERFORMANCE_TRACE , memberName , path , sourceLineNumber #endif ); task.IgnoreTimeScale = ignoreTimeScale; return(task.DoStart().DoFollow(followtarget, followMode)); //return new TimerTask(delay, runner, loopCount, loopduration).DoFollow(followtarget, followMode).DoStart(); }