9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Unity】一定時間ごとに指定した関数を実行する方法

Posted at

#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

9
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?