前提・実現したいこと
お世話になります。
unityで経過時間の取得、その後初期化して再取得したいと思っています。
開発言語はC#です。
発生している問題・エラーメッセージ
下記のコードですが、開始時刻をdatetime型の[start]に格納し、DateTime.Now(現在時刻) から[start]を引いた値をTimespan型の[ts]に代入しています。 その後、[ts]に格納したtimespan型の値から秒数部分をint型の[second]に代入しました。 ここまではうまく動いているのですが、最後にApplication.LoadLevelでリセットを行った際、 [start],[ts]は初期化されているのですが、[second]のみが初期化前の値を保有していて、0か らのスタートができません。 例えば開始から10秒経過後にApplication.LoadLevelを行った場合、 Debug.Log("second: " + second);で示す[second]の値は初期化後も10のままです。 そして初期化から10秒経過後に11、12、13と増えていきます。 初期化後に[second]も0から始める方法はないでしょうか。 アプリ制作上の事情でTime.deltaTimeは使えません。 お知恵を貸していただけると幸いです。
該当のソースコード
C# using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class TimeTest : MonoBehaviour { private DateTime start; private TimeSpan ts; private int second; void Start() { start = DateTime.Now;//開始時刻の取得 } void Update() { ts = DateTime.Now - start;//現在時刻から開始時刻を引いた値をtsに代入 second = (int)ts.TotalSeconds;//tsの秒数部分をint型に変換しsecondに代入 Debug.Log("second: " + second); if (Input.GetKey(KeyCode.Space)) { Application.LoadLevel("Main");//Sceneの初期化 } } }
試したこと
補足情報(FW/ツールのバージョンなど)
unity2017.2of3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/25 08:50
2018/03/25 08:54
2018/03/25 09:06
2018/03/25 09:10
2018/03/25 09:18
2018/03/25 09:25
2018/03/25 09:40
2018/03/25 10:02
2018/03/25 10:06
2018/03/25 21:50