Git Product home page Git Product logo

unitytimer's Introduction

UnityTimer

A simple timer implementation in Unity

Usage

Place TimerManager.cs on a GameObject in your Scene and pass a callback function to timer.timeOut.AddListener()

Design

A new Timer adds itself to TimerManager.Singleton, which updates all timers in a single Update call. A Stopped timer is removed from the manager.

To keep removal quick, instead of List.Remove, the index is nulled and added to a stack of free indices. The Add method checks for free slots before pushing to the List.

Not inheriting from MonoBehaviour means no OnDestroy or OnDisable method, so looping Timers have to be explicitly stopped by their callers or they'll run forever.

The API's simple:

  • Start zeros the timer, and runs it if it's not already running
  • Stop zeros and stops the timer if it's running or paused
  • Pause stops the timer and marks it paused, but does not zero it
  • Unpause starts the timer without zeroing it, but only if it's marked paused. Note that Start and Stop both unmark paused.
    • Having both Start/Stop and Pause/Unpause lets you choose whether or not an object's timer is reset (for example, if it's disabled and later re-enabled).
  • Progress returns a number between 0 and 1 representing what percentage of the timer has passed (useful for Lerps)
  • IsRunning returns true if the timer is running, false otherwise
  • Looping can be enabled by setting the Loop property to true

unitytimer's People

Contributors

brettapitz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.