本日はアプリ内の表現枠です。
近年のゲーム機やスマートフォンではデバイスの時間を取得して機能を変えるというアプリケーションは一般的なものとなっています。
今回はHoloLensのアプリでHoloLensデバイスの時間にアクセスして取得してみます。
前編はスクリプトを書いてUnityで結果を見ていきます。
〇UnityでPCの現在時刻を取得する
C#ではデバイスの時間にアクセスする関数としてDateTimeが使用できます。
上記リンクのMicrosoftのリファレンスでは使用方法やできること、サンプルを見ることができます。
今回はDateTimeを使用して次のようなスクリプトを書きました。
using UnityEngine; using System; /// <summary> /// デバイス内の現在の時間を取得する。 /// </summary> public class TimeGetter : MonoBehaviour { // Start is called before the first frame update void Start() { string _timeDate = DateTime.Now.ToString(); Debug.Log(_timeDate); } }
これを適当なゲームオジェクトにアタッチしてシーンを実行すると次のようにログが表示されます。
年月日時分秒ミリ秒まで取得できることがわかります。
DateTime.Nowメソッドは年月日時分秒ミリ秒まで取得することができます。
〇年の取得
DateTime.Nowメソッドは年、月など個別で取得することもできます。
Start関数内を次のように書き換えました。
void Start() { string _timeDate = DateTime.Now.Year.ToString(); Debug.Log(_timeDate); }
これを実行します。
今年は2020年なので[2020]というように表示されました。
〇月の取得
こちらもStart関数を次のように書き換えました。
void Start() { string _timeDate = DateTime.Now.Month.ToString(); Debug.Log(_timeDate); }
実行すると今月は9月なので[9]と表示されます。
〇日付の取得
次は日付を取得します。 次のように書き換えました。 void Start() { string _timeDate = DateTime.Now.Day.ToString();
Debug.Log(_timeDate);
}
15日なので[15]が取得できました。
[f:id:Holomoto-Sumire:20200915202515j:plain]
〇時間の取得
次は時間を取得します。
void Start() { string _timeDate = DateTime.Now.Hour.ToString(); Debug.Log(_timeDate); }
〇分の取得
次は分を取得します。
void Start() { string _timeDate = DateTime.Now.Minute.ToString(); Debug.Log(_timeDate); }
〇秒の取得
次は秒を取得します。
void Start() { string _timeDate = DateTime.Now.Second.ToString(); Debug.Log(_timeDate); }
〇ミリセカンド
次にミリ秒を取得します。
void Start() { string _timeDate = DateTime.Now.Millisecond.ToString(); Debug.Log(_timeDate); }
〇ある時刻からの経過時間
DateTimeを使用すればある時刻からの経過時間を取得することができます。
次のサンプルスクリプトでは2001年1月1日の新世紀が始まってからの時間を取得することができます。
void Start() { DateTime centuryBegin = new DateTime(2001, 1, 1); DateTime currentDate = DateTime.Now; long elapsedTicks = currentDate.Ticks - centuryBegin.Ticks; TimeSpan elapsedSpan = new TimeSpan(elapsedTicks); Debug.Log("Elapsed from the beginning of the century to :"+currentDate); Debug.Log(elapsedTicks * 100 + "nanoseconds"); Debug.Log(elapsedTicks + "ticks"); Debug.Log(elapsedSpan.TotalSeconds + "seconds"); Debug.Log(elapsedSpan.TotalMinutes + "minutes"); }
これを実行した結果が次のようになります。
新しい世紀になって621895617743930700ナノ秒、621895617.743931秒、10364926.9623988分が経過していることが取得できます。
〇曜日の取得
次に曜日を取得します。
void Start() { _timeDate = DateTime.Now.DayOfWeek.ToString(); Debug.Log(_timeDate); }
曜日の取得にはDateTime.Now.DayOfWeekを用います。
実行結果は次のようになります。
〇年度始からの経過日数
DateTime.Now.DayOfYearを使用すれば1月1日からの経過日数を取得できます。
void Start() { _timeDate = DateTime.Now.DayOfYear.ToString(); Debug.Log(_timeDate); }
〇一日の経過時間を取得する
DateTime.Now.TimeOfDayを使用すれば一日の経過時間を取得できます。
void Start() { _timeDate = DateTime.Now.TimeOfDay.ToString(); Debug.Log(_timeDate); }
以上がDateTime構造体です。 次回HoloLensアプリで使用していきます。