2022/8/17

【Unity】時間の計測には結局何を使えばいいのか

Unity C# にはいろいろな時間計測方法があります。 今回はその中でよく使っていた4つを並べて走らせて検証してみました。

複数並べて走らせて検証してみた

上から順に

  • UnityのUpdate()+Time.deltaTime
  • UniTaskのDelayFrame+Time.deltaTime
  • UniTaskのDelay(1000)
  • DateTimeでTimeSpanを取ったもの

DateTime

恐らく一番誤差の少ないのはDateTime。 日時を扱う為のものなので誤差の蓄積は少ないはずです。 ただしカウントに使うには処理が重いです。

Time.deltaTime

そこに迫るのはTime.deltaTimeを使った2つでした。 Unityのアップデート関数とUniTask.DelayFrame( 1 ) はぴったり一致するようです。

UniTask.Delay

UniTask.Delay( 1000 ) で1000ミリ秒ずつ加算していったものは結構なずれがでてしまいました。ミリ秒単位で正確なイメージがあったので意外でした。 調べてみるとTask.Delay自体の精度があまり高くないみたいです。

結論

Time.deltaTimeを使ってカウントしつつ、つどつどDateTimeやサーバー時間を取得してつじつまを合わせていくのが現実的かも? 他にいい方法があったらコメント欄で教えてください。

なぴぃ
Twitter:@napiiey

フォロー
library_books 関連記事

forumコメント