Fred Fred - 1 month ago 13
C# Question

I used the C# Stopwatch Class in Unity, but it returns only 00:00:00

I want to measure and return the time that passes between the time a user presses the Tab & the Space Button. Unfortunately my Code only returns 00:00:00. This is my code so far.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;
using System;
using System.Diagnostics;
using Debug=UnityEngine.Debug;
public class timer : MonoBehaviour {
public Stopwatch zeit;
void Update () {
zeit = new Stopwatch();
if (Input.GetKeyDown ("tab")) {
zeit.Start();
}

if (Input.GetKeyDown ("space")){
TimeSpan ts = zeit.Elapsed;
zeit.Stop ();
print(ts);
zeit.Reset ();
}
}
}


Answer Source

You are re-creating the stopwatch when calling update. You can initialize the stopwatch on forehand in the "constructor".

public Stopwatch zeit = new StopWatch();
void Update () {
    if (Input.GetKeyDown ("tab")) {
        zeit.Start();
    }

    if (Input.GetKeyDown ("space")){
        TimeSpan ts = zeit.Elapsed;
        zeit.Stop ();
        print(ts);
        zeit.Reset ();
    }
}