The script

using UnityEngine;
using System.Collections;

public class Timer : MonoBehaviour {

	#region Static registers
	public static Timer StartTimer(GameObject target){
		Timer obj = target.GetComponent();
		if(obj == null){
			obj = target.AddComponent();
		}
		obj.StartTimer();
		return obj;
	}
	public static void ResetTimer(GameObject target){
		Timer obj = target.GetComponent();
		if(obj != null){
			obj.ResetTimer();
		}
	}

	public static void StopTimer(GameObject target){
		Timer obj = target.GetComponent();
		if(obj != null){
			obj.StopTimer();
		}
	}
	#endregion

	private bool timerIsActive = false;
	private float timeActive = 0f;
	public void StartTimer(){
		timerIsActive = true;
		timeActive = 0f;
	}

	// Update is called once per frame
	void Update () {
		if(timerIsActive){
			timeActive += Time.deltaTime;
		}
	}

	public float GetCurrentTime(){
		return timeActive;
	}

	public string GetCurrentTimeString(){
		return timeActive.ToString("00.00");
	}
	public bool IsTimerRunning(){
		return timerIsActive;
	}
	public void StopTimer(){
		timerIsActive = false;
	}
	public void ResetTimer(){
		timeActive = 0f;
	}
}

Usage

using UnityEngine;
using System.Collections;

public class TimerUsage : MonoBehaviour {

	private Timer timerInst;
	void Start(){
		timerInst = Timer.StartTimer(this.gameObject);
	}
	void Update(){
		if(timerInst != null){
			Debug.Log(timerInst.GetCurrentTimeString());		
			if(Input.GetMouseButtonDown(0)){
				if(timerInst.IsTimerRunning()){
					timerInst.StopTimer();
				} else {
					timerInst.ResetTimer();
					timerInst.StartTimer();
				}
			}
		}
	}

}