- Home /
timer does not update
i created a custom timer class that counts using system time i made a list from this class so i can run multiple timers and made another list with the value used for the timers to start counting. my problem is that when i try to add extra time it does not work.
an example:
public List<float> _timeleft = new List<float>();
public List<DeathTimer> _timers = new List<DeathTimer>();
public void Start()
{
_timeleft.Add(5f);
_timeleft.Add(1f);
_timeleft.Add(10f);
_timers.Add(new DeathTimer(_timeleft[0], () => Debug.Log("Timer one finished.")));
_timers.Add(new DeathTimer(_timeleft[1], () => Debug.Log("Timer two finished.")));
_timers.Add(new DeathTimer(_timeleft[2], () => Debug.Log("Timer three finished")));
}
public void Update()
{
_timeleft[0] += 5f;
if (_timers.Count > 0)
{
foreach (var timer in _timers.Where(a => !a.Started))
{
timer.Start();
}
foreach (var timer in _timers.Where(a => a.Finished))
{
timer.Dispose();
}
_timers.RemoveAll(a => a.Finished);
}
}
as you can see im adding 5 second every update to timeleft[0] but still the first deathtimer finishes in 5 seconds even though you can see element 0 getting bigger in the inspector. I hope this makes any sense and someone can help me figure out how i can make the timer last longer.
the code for the custom timer below:
public class DeathTimer : IDisposable
{
public bool Finished = false;
public bool Started = false;
public Timer _timer;
public DeathTimer(float time, Action actionToBeExecuted)
{
_timer = new Timer
{
Interval = time * 1000, // in milliseconds
AutoReset = false
};
_timer.Elapsed += (o, args) =>
{
actionToBeExecuted();
Finished = true;
};
}
public void Start()
{
Started = true;
_timer.Start();
}
public void Stop()
{
_timer.Stop();
}
public void Dispose()
{
_timer.Dispose();
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613011909im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Need help with switch case in order/timed 0 Answers
How do I use current List Object [i] as the string name? 3 Answers
Different timer in a list of gameobject 2 Answers
Destroy happens immediately 1 Answer