public void RemoveListenerForInterval(float interval, System.Action OnUpdate) { CustomUpdateItem item = intervalItems.FindInList(interval); if (item != null) { item.OnUpdate -= OnUpdate; if (item.OnUpdate.GetInvocationList().Length == 0) { intervalItems.Remove(item); intervalItemsCount--; } } }
private void FixedUpdate() { for (int i = 0; i < intervalItemsCount; i++) { CustomUpdateItem update = intervalItems[i]; update.TimeElapsedCounter += Time.fixedDeltaTime; if (update.TimeElapsedCounter > update.TimeInterval) { update.TimeElapsedCounter = 0; update.OnUpdate?.Invoke(); } } }
public void AddListenerForInterval(float interval, System.Action OnUpdate) { CustomUpdateItem item = intervalItems.FindInList(interval); if (item == null) { item = new CustomUpdateItem() { TimeInterval = interval }; intervalItems.Add(item); intervalItemsCount++; } item.OnUpdate += OnUpdate; }