今回はUnityで簡単なストップウォッチを作成してみます。
はじめに
Unityのバージョンは2021.3.3f1です。
Unityの時間について理解を深めるために、2Dで簡単なストップウォッチを作成してみます。画面に数字を表示、左クリックでスタート、右クリックでストップする簡単なものです。
作成開始
まずは数字を表示するテキスト。UI->Legacy->Textを追加。

サイズとかフォントは好きなもので。

空のオブジェクトを追加、TimeManagerと言う名前に変更します。

下記のスクリプトを作成。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TimeManager : MonoBehaviour { [SerializeField] private Text _timerText; private float TimerCount; private bool isTimer; void Awake() { TimerCount = 0; isTimer = false; } void Update() { if (Input.GetMouseButtonDown(0)) { isTimer = true; } if (Input.GetMouseButtonDown(1)) { isTimer = false; } } private void FixedUpdate() { if (isTimer) { TimerCount += Time.deltaTime; } _timerText.text = TimerCount.ToString("f3"); } }
入力系(マウスクリック)はUpdate内で実装、時間のカウントはFixedUpdateで実装してみます。
このスクリプトをアタッチして、パラメータをセット。

実行すると、下記の様な感じになります。0.02ずつ増えていて、ストップウォッチとはちょっと違うかなと言う感じです。

公式リファレンスを確認すると、FixedUpdate内ではTime.deltaTimeはTime.fixedDeltaTimeが返されるという事。なるほど。
FixedUpdateを削除して、Updateを下記の様に変更するといい感じに動作します。
void Update() { if (Input.GetMouseButtonDown(0)) { isTimer = true; } if (Input.GetMouseButtonDown(1)) { isTimer = false; } if (isTimer) { TimerCount += Time.deltaTime; } _timerText.text = TimerCount.ToString("f3"); }