Unityでゲームでよく使いそうな時間関連の情報を得る方法をいつくか挙げます
・現在時刻
・UnixTimeの変換
・フレーム数の取得
・経過時間の取得
・1フレームごとの時間の取得
■現在時刻
c#のDateTimeを利用
Systemの名前空間を追加
using System;
以下のスクリプトで取得
Debug.Log(DateTime.Now);
出力
■UnixTimeを取得
DateTimeからUnixTimeを取得するメソッドを作成
using System; public static class TimeUtil { private static DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0); // DateTimeからUnixTimeへ変換 public static long GetUnixTime(DateTime dateTime) { return (long)(dateTime - UnixEpoch).TotalSeconds; } // UnixTimeからDateTimeへ変換 public static DateTime GetDateTime(long unixTime) { return UnixEpoch.AddSeconds(unixTime); } }
実行
Debug.Log(TimeUtil.GetUnixTime(DateTime.Now));
出力
■起動後のフレーム数
Time.frameCountで起動したからのフレーム数を取得できる
void Update(){
Debug.Log(Time.frameCount);
}
出力
■起動後の経過時間
Time.realtimeSinceStartupでゲームが起動してからの時間を取得できる
void Update(){ if(Time.frameCount % 30 == 0){ Debug.Log(Time.realtimeSinceStartup); } }
出力
■1フレームにかかった時間
Time.deltaTimeで直前の1フレームに要した時間を取得できる
void Update(){
Debug.Log(Time.deltaTime);
}
■まとめ
今回はよく使いそうな情報のまとめでしたが、今後はこの情報をゲームでどのように利用するかをまとめていこうと思っています
■参考
docs.unity3d.com