Home

Awesome

Improved Unity Timers

PlayerLoop2

An extensible Timer solution for Unity Game Development. Timers are self managing by injecting a Timer Manager class into Unity's Update loop.

Create your own Timers by extending the Timer abstract class!

Example Usage

CountdownTimer timer = new CountdownTimer(5f);

void Start() {
    timer.OnTimerStart += () => Debug.Log("Timer started");
    timer.OnTimerStop += () => Debug.Log("Timer stopped");
    timer.Start();
    
    timer.Pause();
    timer.Resume();
    
    timer.Reset();
    timer.Reset(10f);
    
    Debug.Log(timer.IsRunning ? "Timer is running" : "Timer is not running");
    Debug.Log(timer.IsFinished ? "Timer is finished" : "Timer is not finished");
    
    timer.Stop();
}

void Update() {
    Debug.Log(timer.CurrentTime);
    Debug.Log(timer.Progress);
}

void OnDestroy() {
    timer.Dispose();
}

Notes

Several Timers are already included, but you can create any kind of Timer you need that can be adjusted every frame. The included Timers are:

Classes extending the Timer class must implement the Tick method to increment or decrement the Timer, and the IsFinished property which is a convenience for consumers.

Call Dispose when you don't need a Timer anymore to ensure proper garbage collection.

How to Install

Simply download the library into your Unity project and access the utilities across your scripts or import it in Unity with the Unity Package Manager using this URL:

https://github.com/adammyhre/Unity-Improved-Timers.git

Add to Manifest

Alternatively, you can add the following line to your project's manifest.json file.

"com.gitamend.improvedtimers": "https://github.com/adammyhre/Unity-Improved-Timers.git"

YouTube

You can also check out my YouTube channel for more Unity content.