Start, Stop and Reset a Timer with C# scripting
How to create a Timer with scripting (C#) in Unity 2018. Learn to start, stop and reset the timer using UI buttons in this Intermediate tutorial. Direct links to the free font and background below.
❤️ Subscribe to Oxmond Tutorials:
https://bit.ly/SubscribeOxmondTutorials
✅ Download the Digital 7 font here:
https://www.dafont.com/digital-7.font
✅ Timer background asset based on this file by Fabio Basile:
https://all-free-download.com/free-psd/download/timer-widget-interface-with-blue-digital-numbers_175188.html
✅ Other Free Asset Packages at the Unity Assets Store:
https://assetstore.unity.com/lists/top-free-packages-13201
😷👕 Need a face mask / developer T-shirt? Drop by our shop and get a 20% DISCOUNT on your first purchase by using the discount code OXMONDSALE. Click here:
https://shop.oxmond.com/discount/OXMONDSALE
Timer script:
/* .-------. .--. .-------. .--. .--. .--. | |--.--.--------.-----.-----.--| | |_ _|--.--| |_.-----.----|__|---.-| |-----. | - |_ _| | _ | | _ | | | | | | _| _ | _| | _ | |__ --| |_______|__.__|__|__|__|_____|__|__|_____| |___| |_____|____|_____|__| |__|___._|__|_____| © OXMOND / www.oxmond.com */ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Timer : MonoBehaviour { public Text timerMinutes; public Text timerSeconds; public Text timerSeconds100; private float startTime; private float stopTime; private float timerTime; private bool isRunning = false; // Use this for initialization void Start () { TimerReset(); } public void TimerStart() { if (!isRunning) { print("START"); isRunning = true; startTime = Time.time; } } public void TimerStop() { if (isRunning) { print("STOP"); isRunning = false; stopTime = timerTime; } } public void TimerReset() { print("RESET"); stopTime = 0; isRunning = false; timerMinutes.text = timerSeconds.text = timerSeconds100.text = "00"; } // Update is called once per frame void Update () { timerTime = stopTime + (Time.time - startTime); int minutesInt = (int)timerTime / 60; int secondsInt = (int)timerTime % 60; int seconds100Int = (int)(Mathf.Floor((timerTime - (secondsInt + minutesInt * 60)) * 100)); if (isRunning) { timerMinutes.text = (minutesInt < 10) ? "0" + minutesInt : minutesInt.ToString(); timerSeconds.text = (secondsInt < 10) ? "0" + secondsInt : secondsInt.ToString(); timerSeconds100.text = (seconds100Int < 10) ? "0" + seconds100Int : seconds100Int.ToString(); } } }
however, causal loops are unchanging and self-originating, whereas time loops are constantly resetting: when a certain condition is met, such as a death of a character or a clock reaches a certain time, the loop starts again, with one or more characters retaining the memories from the previous loop.
Best view I have ever seen !