この記事でのバージョン
Unity 5.1.0f3 Personal
はじめに
今回は現在時刻を取得したり、経過日数を知りたい時の方法です。
DateTime
時間関連の処理を行う時は以下のようにDateTimeを使います。
using System; //DateTimeを使うのに必要 //現在時刻の取得 DateTime now = DateTime.Now;
このDateTimeを使うと計算も楽になります。
例えば経過日数を調べる場合は以下のような感じに。
//lastDateからnowへの経過日数 (lastDateとnowはDateTime) int day = now.Subtract (lastDate).Days;
他にも日数をすすませるAddDaysや曜日を取得するDayOfWeekなど便利なメソッドが揃っています。
詳しくは以下のサイトが分かり易かったです。
日時、時間の計算をする: .NET Tips: C#, VB.NET
PlayerPrefsへ保存
時刻を保存しときたい、みたいな事もよくあると思いますが、
DateTimeはそのままPlayerPrefsを保存することはできません。
なので、ToBinaryを使ってバイナリ化したのち、ToStringを使ってstringで保存します。
//現在時刻の保存 DateTime now = DateTime.Now; PlayerPrefs.SetString ("Key", now.ToBinary().ToString());
//保存していたデータの読み込み string defult = new DateTime(2000, 1, 1, 16, 32, 0, DateTimeKind.Local).ToBinary().ToString();//保存していたデータが存在しない時用のデフォルト値 string dateTimeString = PlayerPrefs.GetString ("Key", defult); DateTime time = System.DateTime.FromBinary (System.Convert.ToInt64 (datetimeString));
おわりに
便利なDateTimeですが、DateTime.Nowを使って現在時刻を取得すると端末の時間を取得するので、
ユーザ側で簡単に変更できてしまいます。
なのでスタミナ管理等に使ってしまうと、簡単に不正されてしまう点にはご注意を。