1. ホーム
  2. c#

[解決済み] UnityでC#のストップウォッチクラスを使ってみたが、00:00:00しか返さない

2022-02-25 19:43:10

質問

ユーザーがTab & Spaceボタンを押してから経過した時間を計測して返したいのですが、どうすればいいですか?残念ながら、私のコードは00:00:00を返すだけです。これは今のところ私のコードです。

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 ();
        }
    }
}
    

解決方法は?

updateを呼び出す際に、ストップウォッチを再作成しています。コンストラクタでストップウォッチを初期化することができます。

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 ();
    }
}