76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| 
 | |
| public class TimerManager : D_MonoSingleton<TimerManager>
 | |
| {
 | |
|     [SerializeField] int _TimerCount;
 | |
| 
 | |
|     private List<TimerUnit> mTimerList;
 | |
|     private List<TimerUnit> mDestroyList;
 | |
| 
 | |
|     protected override void Initialize()
 | |
|     {
 | |
|         base.Initialize();
 | |
| 
 | |
|         mTimerList = new List<TimerUnit>();
 | |
|         mDestroyList = new List<TimerUnit>();
 | |
|     }
 | |
| 
 | |
|     private void Update()
 | |
|     {
 | |
|         _TimerCount = mTimerList.Count;
 | |
|         if (mTimerList.Count > 0)
 | |
|         {
 | |
|             for (int i = 0; i < mTimerList.Count; i++)
 | |
|             {
 | |
|                 if (mTimerList[i].IsAvailable)
 | |
|                 {
 | |
|                     mTimerList[i].Update(Time.deltaTime, Time.unscaledDeltaTime);
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     mDestroyList.Add(mTimerList[i]);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (mDestroyList.Count > 0)
 | |
|             {
 | |
|                 for (int i = 0; i < mDestroyList.Count; i++)
 | |
|                 {
 | |
|                     mTimerList.Remove(mDestroyList[i]);
 | |
|                 }
 | |
| 
 | |
|                 mDestroyList.Clear();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public TimerUnit CreateTimerUnit()
 | |
|     {
 | |
|         TimerUnit tUnit = new TimerUnit();
 | |
|         mTimerList.Add(tUnit);
 | |
| 
 | |
|         return tUnit;
 | |
|     }
 | |
| 
 | |
|     public void Schedule(Action pDelDone, float pSeconds, int pCount = 1, bool pIgnoreTimeScale = false)
 | |
|     {
 | |
|         TimerUnit tUnit = CreateTimerUnit();
 | |
|         tUnit.StartTimer(pDelDone, pSeconds, pCount, pIgnoreTimeScale, true);
 | |
|     }
 | |
| 
 | |
|     public void DestroyTimerUnit(TimerUnit pUnit)
 | |
|     {
 | |
|         pUnit.Destroy();
 | |
|     }
 | |
| 
 | |
|     public void ClearAll()
 | |
|     {
 | |
|         foreach (TimerUnit tUnit in mTimerList)
 | |
|         {
 | |
|             tUnit.Destroy();
 | |
|         }
 | |
|     }
 | |
| } |