【趣味】【ゲーム開発】Unity時間管理のひな形
C#の基本構造にTimeSpanという構造体がある。
整数型で1/10000000秒まで管理でき、
ミリ秒, 秒, 分, 時間など、それぞれの単位で時間取得できる便利なものだ。
UnityのTime.deltaTimeと組み合わせることで、
時間管理がかなり容易になる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// C# システム using System; // Unity システム using UnityEngine; /// <summary> シーン実行経過時間 </summary> public class SceneTimer : MonoBehaviour { /// <summary> 初更新時処理 </summary> void Start () { Restart(); } /// <summary> 更新時処理 </summary> void Update () { Elapsed += ToTimeSpan(Time.deltaTime); // 経過時間加算 _elapsedTime = Elapsed.ToString(); // 経過時間のテキストをセット } /// <summary> 再開始処理 </summary> public static void Restart() { Elapsed = new TimeSpan(0); } /// <summary> float型の秒をTimeSpan型に変換 </summary> public static TimeSpan ToTimeSpan(float seconds) { return TimeSpan.FromTicks((long)(seconds * 10000000.0f)); } /// <summary> 経過時間 </summary> public static TimeSpan Elapsed { get; private set; } /// <summary> 経過時間のテキスト </summary> [SerializeField] string _elapsedTime; } |
_elapsedTimeはインスペクタに文字列出力して、
時間確認できるようにしている変数である。
こういう更新回数が非常に多い値確認はログに出すよりも、
こっちに出すほうが、コスパがいい。
…この流れだと、今週はプログラム技術ブログになるか…?