| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class TimerSystem : MonoSingleton<TimerSystem>
- {
- private List<TimeTask> m_TimerTaskList = new List<TimeTask>();
- private void Update()
- {
- for (int i = 0; i < m_TimerTaskList.Count; i++)
- {
- TimeTask timeTask = m_TimerTaskList[i];
- if (timeTask.remainingTime <= 0)
- {
- if (timeTask.callBack != null)
- {
- try
- {
- timeTask.callBack();
- }
- catch(Exception e)
- {
- Debug.LogException(e);
- }
- }
- if (timeTask.count == 1)
- {
- m_TimerTaskList.RemoveAt(i);
- i--;
- }
- else
- {
- if (timeTask.count != 0)
- {
- timeTask.count -= 1;
- }
- timeTask.remainingTime = timeTask.delay;
- }
- }
- if (!timeTask.pause)
- {
- timeTask.remainingTime -= Time.deltaTime;
- }
- }
- }
- public TimeTask AddTimeTask(Action callback, float delay, int count = 1)
- {
- TimeTask task = new TimeTask(callback, delay, count);
- m_TimerTaskList.Add(task);
- return task;
- }
- public bool RemoveTimeTask(TimeTask task)
- {
- if (task != null)
- {
- if (m_TimerTaskList.Contains(task))
- {
- m_TimerTaskList.Remove(task);
- return true;
- }
- }
- return false;
- }
- }
|