ビルド後動きが遅い

Unityで試していた時に、以下のような出来事がありました。

Unityのプレイモードだと正常に動作しているが、ビルドした後に実行するとObject等の動きが遅かったりする。

実際のところはというと、

Unityのプレイモードだと正常に動作している(ように偶然見えている)が、ビルドした後に実行するとObject等の動きが(スクリプトで記述した通り、正常に)遅かったりする。

話は単純なので、今回何が起きていたのかの説明です。
原因としては以下の要素が組み合わさった結果でした。

  • Time.fixedDeltaTimeをUpdateで利用した
    • この時点で、移動速度がFPS依存になります
  • その状態でプレイモードで速度を調整した
    • 今回はFPS800近く出てます
  • Updateの実行頻度がプレイモードとビルド後で差があった
    • FPS60まで落ち、FPS依存の移動速度が落ちた

Unityのスクリプトの基本的な箇所でした。
Update内でfixedDeltaTimeを利用してしまったため、移動量等の計算結果が期待した値になっていないだけです。

FPSを測ってみました。
deltaTimeからFPSを、fixedDeltaTimeからFixedFPSを計算します。
最初にUnityのプレイモード。

次に、Buildした後に全画面で実行した結果。

当然ですがFixedFPSは同じです。
そして、FPSが10倍以上差があります。

改修については、deltaTimeを利用するかFixedUpdateに移動するかですが、物理演算に影響を与える場合はFixedUpdateに移動するのが良いでしょう。

おまけ:
FixedUpdateでTime.deltaTimeを呼ぶとTime.fixedDetitaTimeが取得できます。(https://docs.unity3d.com/ja/2021.1/ScriptReference/Time-deltaTime.html
UpdateでもFixedUpdateでもTime.deltaTimeを使えば間違いではありません。