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();
|
|
}
|
|
}
|
|
} |