タイマーを作るためにはまずアプリが終了していても通知する仕組みが必要。
次にアプリを再起動したときには全てリセットされるので残り時間の管理をしつつ、経過時間を取得する必要がある。
今回は経過時間の計算方法メモ。
System.DateTime.Nowで現在時刻の情報を得ることができる。
1 2 3 4 5 |
Debug.Log(System.DateTime.Now.Month); //月 Debug.Log(System.DateTime.Now.Day); //日 Debug.Log(System.DateTime.Now.Hour); //時 Debug.Log(System.DateTime.Now.Minute);//分 Debug.Log(System.DateTime.Now.Second);//秒 |
System.DateTime.Now.Ticksで0001年1月1日00:00:00から100ナノ秒ごとのカウント数を取得できる。
(最大TickはDateTime.MaxValue.Ticksで保存されていて10000年まで使える)
一定間隔ごとにこの値を保存して、起動時に差分をとることで前回終了時からの時間を計算する。
1 2 3 4 5 6 7 8 |
void Start(){ long lastTick = PlayerPrefs.GetString("lastTick")==""?System.DateTime.Now.Ticks:long.Parse(PlayerPrefs.GetString("lastTick")); int laspedSec = (int)((System.DateTime.Now.Ticks - lastTick)/10000000); ... } void Update(){ PlayerPrefs.SetString("lastTick",System.DateTime.Now.Ticks.ToString()); } |
これで前回終了時からの経過時間をアプリに反映させることができる。