🎮

Unity 6へのアップデート時はFixed Timestepの再設定が必要

2024/11/01に公開

UnityのTime設定にはFixed Timestepという項目があり、フレームレートに依存せずに物理計算やFixedUpdateを実行する間隔を設定することができます。
https://docs.unity3d.com/ja/2023.2/Manual/class-TimeManager.html

筆者はUnityで弾幕STGを開発しており、インゲーム中イベント管理のためのLuaスクリプト実行をFixed Updateで制御しているのですが、Unity 6へアップデートした際にスクリプト実行間隔が低下していることに気づいたため、設定項目を再確認しました。

発生状況

Unity 2021.3.44f1 以前のバージョンで設定していたFixed Timestepが、Unity 6000.0.25f1 へのアップデート時に引き継がれていない

対処方法


Edit/Project Settings.../Time から、 Fixed Timestepの数値を変更して保存します。

このとき、Gitで差分を確認したら、Fixed Timestepの値の型が変わっていました。

TimeManager.asset
--- !u!5 &1
TimeManager:
  m_ObjectHideFlags: 0
- Fixed Timestep: 0.0167
+ Fixed Timestep:
+   m_Count: 2356703
+    m_Rate:
+      m_Denominator: 1
+      m_Numerator: 141120000
  Maximum Allowed Timestep: 0.1
  m_TimeScale: 1
  Maximum Particle Timestep: 0.03

古い型のまま値が入っていると、初期値である0.02として解釈されてしまうようです。

以上です。
今回、Reimport Allなどを行っても、特に再生成等も行われなかったため、手動で再設定が必要のようでした。Unityアップデートでゲームの実行速度等、挙動が変わってしまった方は、一度この設定を確認してみてください。

Discussion