簡単なストップウォッチを作成してみた【Unity】

今回は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");
    }

タイトルとURLをコピーしました