/// <summary> /// Выполнение метода в течение промежутка времени /// </summary> /// <param name="method">Метод, который нужно выполнять</param> /// <param name="time">Время выполнения метода</param> public void InvokeRepeating(Action method, float time, float interval, Action callback = null) { var invokeTime = new InvokeTime(method, PhotonNetwork.Time, time, interval, callback); invokeTime.Interval += _bias; // прибавляем погрешность чтобы не халтурить invokeTime.Timer = PhotonNetwork.Time; // чтобы тайм вычитался на тайм в первый тик и сработал моментально _invokeRepeatingMethods.Add(invokeTime); }
public override DateTime GetNext(DateTime now) { InvokeTime = InvokeTime.AddSeconds(Interval); return(InvokeTime); }
void CalNext(ref int minute, ref int hour, ref int day, ref int month, ref int year) { #region ***分*** if (Minutes != null && Minutes.MoveNext())//按分钟循环 { minute = Minutes.Current; return; } //重置 if (Minutes != null) { Minutes.Reset(); minute = Minutes.Current; } else { minute = 0; } #endregion #region ***时*** if (Hours == null && hour < 23)//每小时循环 { hour++; return; } else if (Hours != null && Hours.MoveNext()) { hour = Hours.Current; return; } //重置 if (Hours != null) { Hours.Reset(); hour = Hours.Current; } else { hour = 0; } #endregion #region ***日*** if (Days == null) { if (_isFirst) { _isFirst = false; return; } var newD = InvokeTime.AddDays(1); day = newD.Day; month = newD.Month; year = newD.Year; return; } else if (Days.MoveNext()) { day = Days.Current; return; } else { Days.Reset(); day = Days.Current; } if (Months == null) { if (_isMonthFirst) { _isMonthFirst = false; return; } var newD = InvokeTime.AddMonths(1); month = newD.Month; year = newD.Year; return; } #endregion }