#1. Google検索にて一定時間で実行する方法を検索すると
検索上位の情報では以下の様なヒントが出てくると思います。
- Time.deltaTime
- Time.time
#2. Time.deltaTimeなどを使った時のデメリット
- 時間管理をミスる可能性が高い
- バグの原因になる可能性がある
この2種類の関数を用いた時の特徴としてはIF文を書く必要がありますが、沢山の処理があった場合は可読性を落とす事なります。
#3. 何を使えばいいの?
**InvokeRepeating()**を使用すればキレイに解決します。
簡単な説明は以下の通りです
InvokeRepeating("使用したいメソッド名", 開始時間, 何秒後に再実行);
サンプルコードは以下の通りです。(スマホの位置情報を一定時間毎に更新したい)
sample.cs
/// <summary> 起動時間(秒) </summary>
private const float START_SECONDS = 0.0f;
/// <summary> 更新間隔時間(秒) </summary>
private const float INTERVA_SECONDS = 1.0f;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("UpdateMyPhoneLocation", START_SECONDS, INTERVA_SECONDS);
}
private void UpdateMyPhoneLocation(){
//GPSデータを取得
}
#4. InvokeRepeatingのメリットは?
読んだ人は思うでしょう。。。
Time.deltaTime等と違って可読性が高いが最大のメリットだと思います。
#
もっといい方法(アドバイス)や感想があったらコメントしてください以上。
[参考]https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.InvokeRepeating.html