Unity C#で経過時間を計測する方法

time IT

現在時刻から計測した時刻を引き算することで、その間の時間を計測することができます。

スポンサーリンク

経過時間の計測

unity 経過時間4
スプライトを二回押すと、その間の経過時間が表示されるというものを作ります。

前準備

unity 経過時間1
予めテキストとコライダーを付けたスプライトを用意しておきます。
//Unity C#
using UnityEngine.UI;
using System;

public class GetTime : MonoBehaviour
{
public Text text;
DateTime dt;
TimeSpan dt2;
bool dtFlag;
}
スクリプトを作成し、スプライトにアタッチして、名前空間にUnityEngine.UIおよびSystemを追加し、publicでTextを入れる変数および後で使う変数を作成して、
unity 経過時間2
インスペクターでテキストをセットしておきます。テキストの追加文字を表示する方法については別記事で詳しく解説しています。

現在時刻の取得

//Unity C#
void OnMouseDown()
{
        
if (dtFlag)
{
dtFlag = false;
}
else
{
dtFlag = true;
}
}
OnMouseDownメソッドの中でIf文で分岐し、bool値dtFlagが押すたびONOFFされるようにしておきます。
//Unity C#
void OnMouseDown()
{
        
if (dtFlag)
{
dtFlag = false;
}
else
{
dt = DateTime.Now;
text.text = "計測開始";
dtFlag = true;
}
}
現在時刻はDateTime.Nowで取得できるので、dtFlagがFalseの時は現在時刻を取得し、DateTime構造体のdtに値を保存します。これが開始時刻になるので、テキストには始めた旨表示しておきます。

経過時間の取得

//Unity C#
void OnMouseDown()
{
        
if (dtFlag)
{
dt2 = DateTime.Now - dt;
text.text = "経過時間は" + dt2.ToString() + "です";
dtFlag = false;
}
else
{
dt = DateTime.Now;
text.text = "計測開始";
dtFlag = true;
}
}
DateTime同士の演算結果(経過時間)をDateTimeに入れることはできないので、TimeSpanというまた別の構造体を使います。
二回目にスプライトをクリックした時は、現在時刻からさっきの時刻を引き算し、これをTimeSpan構造体のdt2に代入します。
Textには文字列しか表示できないので、ToString関数でデータ型を変更します。
unity 経過時間3
以上です。テストプレイでスプライトを一回押すと計測開始の表示がされ、
unity 経過時間4
二回押すと一回目からの経過時間が表示されます(TimeSpanの場合、年月日は表示されません)。再度押すと一回目に戻ります。
//Unity C#
using UnityEngine.UI;
using System;

public class GetTime : MonoBehaviour
{
    public Text text;
    //現在時刻
    DateTime dt;
    //経過時間
    TimeSpan dt2;
    bool dtFlag;

    void OnMouseDown()
    {
        
        //経過時間
        if (dtFlag)
        {
            dt2 = DateTime.Now - dt;
            text.text = "経過時間は" + dt2.ToString() + "です";
            dtFlag = false;
        }
        //現在時刻
        else
        {
            dt = DateTime.Now;
            text.text = "計測開始";
            dtFlag = true;
        }
    }
}
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント