Resetting a timer after game over

Working on a timer for my game, but having trouble getting the game to reset once the time runs out. I’ve tried looking through several other pages of people having this problem, but I can’t seem to get it to work ><

The code I’m using:

using UnityEngine;
using System.Collections;

public class TimerScript : MonoBehaviour {

private float startTime = 0;

private float restSeconds = 0;

private int roundedRestSeconds = 0;

private float displaySeconds = 0;

private float displayMinutes = 0;

public int CountDownSeconds = 120;

private float Timeleft = 0;
string timetext = "";

    void Start () {

        startTime = Time.deltaTime;
    }
	
	void ResetTimer()
		{
		    startTime = Time.time;
		}

    void OnGUI () 
	{

       startTime = 0;

       Timeleft = Time.time-startTime;

       restSeconds = CountDownSeconds-(Timeleft);

       roundedRestSeconds = Mathf.CeilToInt(restSeconds);
       displaySeconds = roundedRestSeconds % 60;
       displayMinutes = (roundedRestSeconds / 60)%60;

       timetext = (displayMinutes.ToString() + ":");

       if (displaySeconds > 9){
           timetext = timetext + displaySeconds.ToString();
       }
       else {
           timetext = timetext + "0" + displaySeconds.ToString();
       }
		if (displaySeconds < 0){
			ResetTimer();
			Application.LoadLevel("over");	
		}
       GUI.Box(new Rect(650.0f, 0.0f, 100.0f, 75.0f), timetext);
    }
}

Any help would be greatly appreciated.

First of,

startTime = Time.deltaTime;

Doesn’t make much sense. It would be better if you set it to 0, or to Time.Time, as
you do in the ResetTimer()-function.

And in the OnGUI()-function, you should remove the
startTime = 0;

since the start time should only be changed at startup and/or at reset.
You might also want to move the time calculation to the Update() function, since you dont need to calculate the time several times per frame. Once per frame is enough.

If you want some example code, you can look at my implementation of a time counter:

				m_currentTime 			= ((((m_countdownTime + m_startTime) - Time.time) * Time.timeScale));
				m_currentHour 			= ((((Mathf.FloorToInt(m_currentTime))/60)/60)%24);
				m_currentMinute			= (((Mathf.FloorToInt(m_currentTime))/60)%60);
				m_currentSecond			= ((Mathf.FloorToInt(m_currentTime))%60);
				m_currentMillisecond	= (Mathf.RoundToInt(((m_currentTime * 1000) - (Mathf.FloorToInt(m_currentTime) * 1000))));

m_countdownTime is the value of seconds you want to count from (ex. 20 seconds).
The m_startTime I set at the Start()-function as such:

m_startTime = Time.time;