hey guys so i have made a fps game and i have a flashlight on one of the weapons. what id like to do is make a timer so that when you turn the flashlight on with (Shift + 2) it has 15 minutes before it turns off... also i would like to know how to keep it at the current time it would be at incase i turn it off with with (Shift + 2).
You could maybe https://docs.unity3d.com/ScriptReference/WaitForSeconds.html or you could keep a track of https://docs.unity3d.com/ScriptReference/Time-time.html and update it as you see fit. Personally I would go with WaitForSeconds().
I'd go with a 'charge' counter that you decrease during update by subtracting Time.deltaTime when the light is turned on. When it reaches Zero (or is <0), the Charge is depleted, and the light turns off. I find this helpful because it's near trivial to implement automatically works with pausing the game and 'bullet time' (or all other effects that affect Time.timeScale) you can simulate finding battereies that aren't fully charged using the Charge amount you can modify the lifgh's intensity and color, simulating how Charge runs down and the light grows darker.
Code (CSharp): float timer = 0f; public float timerInterval = 900f; // 15 * 60 = 900 seconds bool isFlashlightOn = false; void Start() { timer = timerInterval; // reset flashlight to 15 mins charge } void Update() { if(isFlashlightOn && timer > 0) { timer -= Time.deltaTime; if(timer <= 0f) { isFlashlightOn = false; // turn off flashlight here as you ran out of charge } } else { isFlashlightOn = false; // turn off flashlight here as you ran out of charge } } Something like that, note that was written freehand without an IDE so may contain some issues but should get you on right path.
If you do it from a coroutine the gameobject will only take resources when the flashlight is on / recharging. One game object with a update is not a problem though.