Last Updated 2025.03.28
Project Settings にある、FixedUpdateの実行間隔を指定できる項目──
要するに、プロジェクトの1フレームが何秒なのかの設定である
《FixedTimestep》 を
スプリクトから取得する方法の備忘録になります。
FixedTimestepの値をスクリプトで取得する
▼ fixedDeltaTime を使用します
using UnityEngine;
// FixedTimestep取得のサンプルスクリプト
public class GetFixedTimestepSample : MonoBehaviour
{
void Start()
{
float _1Frame = Time.fixedDeltaTime;
}
}注意点
同じProject Settings内にある《TimeScale》が
float timeScale = Time.timeScale;
Debug.Log(timeScale);
で取れるので
単純に " Time.fixedTimestep " で取れるかと思ったら……
× float _1Frame = Time.fixedTimestep; // ※ダメな書き方
通りません。赤エラーになります。
なので、《FixedTimestep》を参照したい場合は
ちゃんと ” Time.fixedDeltaTime ” と記述しましょう (自分への戒め)
調べた経緯について
格闘ゲームを制作する上で、絶対に避けて通れないのが『フレーム単位』の考え方です。
- 『発生は何フレーム』
- 『持続は何フレーム』
- 『入力の受け付けは何フレーム』
といった具合に、いたるところで頻出します。
これに対し、作る側はちゃんと『把握しながら設定できる』プロジェクト設計にするのが望ましいですし、自分も『時間』ではなく『フレーム単位』での考え方が定着してしまっているので、なるべくフレームで管理、設定できる方法を模索しています。
"何秒" より "何フレーム" かで考えた方が解りやすいのが格ゲー脳なんです。そういうものなんです。
今回の記述を使えば
FixiedTimestepに設定している時間 = 1フレームになるので
fixedDeltaTimeで習得した値に、指定したいフレーム数を乗算すればいいですね。
float値を参照するスクリプトを扱う場合でも、『任意のフレームで何々する』といった記述が可能になるので、指定方法や記述場所の選択肢が 『フレーム単位の考え方』 を崩さずに増やせると思います。
▼参考元 (※ただしTime.fixedDeltaTimeという記述に関しては解りにくかったです)