現在時刻から計測した時刻を引き算することで、その間の時間を計測することができます。
経過時間の計測
スプライトを二回押すと、その間の経過時間が表示されるというものを作ります。
前準備
予めテキストとコライダーを付けたスプライトを用意しておきます。
//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 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関数でデータ型を変更します。
二回目にスプライトをクリックした時は、現在時刻からさっきの時刻を引き算し、これをTimeSpan構造体のdt2に代入します。
Textには文字列しか表示できないので、ToString関数でデータ型を変更します。
以上です。テストプレイでスプライトを一回押すと計測開始の表示がされ、
二回押すと一回目からの経過時間が表示されます(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の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント