Unity の Invoke 関数と InvokeRepeting 関数はタイミング呼び出しを制御します

記事ディレクトリ

ここに画像の説明を挿入します

呼び出す

Unityのゲーム開発において、Invokeメソッドの呼び出しを遅延させるために使用されるメソッドです。一定期間後に特定の関数またはメソッドを実行できます。通常は、一定期間後にイベントをトリガーしたり、一定の間隔内でメソッドを繰り返し実行したりするなど、スケジュールされたタスクを実行するために使用されます。Invoke方法の詳細は次のとおりです。

関数シグネチャ:

void Invoke(string methodName, float time);
  • methodName: 呼び出されるメソッドの名前。文字列として指定されます。
  • time: 指定されたメソッドが呼び出されるまでの遅延時間 (秒単位)。

使用例:

呼び出されるメソッドを含むスクリプトがありDoSomething、2 秒後にこのメソッドを呼び出すとします。この機能は、以下を使用して実現できますInvoke

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        // 2秒后调用DoSomething方法
        Invoke("DoSomething", 2.0f);
    }

    void DoSomething()
    {
    
    
        // 这个方法将在2秒后被调用
        Debug.Log("Something has been done!");
    }
}

上記の例では、メソッド内でInvokeメソッドStartが呼び出され、遅延されるメソッドの名前と遅延時間が渡されます。時間が 2 秒に達すると、Unity は自動的にDoSomethingメソッドを呼び出し、対応するメッセージをコンソールに出力します。

キャンセル呼び出し:

Invokeスケジュールされた遅延通話を呼び出した後にキャンセルしたい場合は、CancelInvokeメソッドを使用できます。たとえば、上記の例で遅延呼び出しをキャンセルするには、次のようにします。

void Start()
{
    
    
    // 2秒后调用DoSomething方法
    Invoke("DoSomething", 2.0f);

    // 在1秒后取消延迟调用
    Invoke("CancelDelayedCall", 1.0f);
}

void CancelDelayedCall()
{
    
    
    // 取消延迟调用
    CancelInvoke("DoSomething");
}

上記の例のメソッドはCancelDelayedCall1 秒後に呼び出され、メソッドへの遅延呼び出しはCancelInvokeを使用してキャンセルされます。DoSomething

つまり、Invokeこれは Unity でメソッドの呼び出しを遅らせるためのシンプルかつ強力な方法であり、スケジュールされたタスクや 1 回限りのイベントを実装する場合に非常に役立ちます。ただし、過度に使用するとInvokeパフォーマンスに影響を与える可能性があるため、使用する場合は注意してください。場合によっては、コルーチンやタイムライン システムなど、より優れた代替手段がある可能性があります。

呼び出し繰り返し

InvokeRepeatingは、指定したメソッドを繰り返し呼び出すために使用される Unity の別のメソッドです。 と似ていますInvokeが、メソッドを一定の間隔で繰り返し呼び出すことができます。これを使用して、定期的なタスクを作成したり、ループ内で関数を実行したりできます。以下InvokeRepeatingについて詳しく紹介します。

関数シグネチャ:

void InvokeRepeating(string methodName, float time, float repeatRate);
  • methodName: 呼び出されるメソッドの名前。文字列として指定されます。
  • time: 初めてメソッドを呼び出すまでの遅延時間 (秒単位)。
  • repeatRate: メソッドの繰り返し呼び出し間の時間間隔 (秒単位)。

使用例:

というDoSomethingメソッドを含むスクリプトがあり、ゲームの開始後 3 秒ごとにこのメソッドを呼び出したいとします。この機能は、以下を使用して実現できますInvokeRepeating

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        // 延迟1秒后开始调用DoSomething方法,然后每隔3秒重复调用
        InvokeRepeating("DoSomething", 1.0f, 3.0f);
    }

    void DoSomething()
    {
    
    
        // 这个方法将每隔3秒被调用一次
        Debug.Log("Something is happening repeatedly!");
    }
}

上の例では、InvokeRepeatingメソッドはStartメソッド内で呼び出され、繰り返し実行されるメソッドの名前、最初の呼び出しの遅延 (1 秒)、および繰り返される呼び出し間の時間 (3 秒) を渡します。これにより、DoSomethingゲーム開始後 1 秒遅れて最初にメソッドが呼び出され、その後 3 秒ごとに繰り返されます。

同様に、メソッドをInvoke使用して繰り返しの呼び出しをキャンセルすることもできますCancelInvokeInvokeRepeating

つまり、InvokeRepeatingこれは Unity で定期的に繰り返されるタスクを作成するために使用される方法であり、関数を定期的に実行する必要があるシナリオに適しています。ただし、繰り返し呼び出しを過度に使用するとパフォーマンスに影響を与える可能性があるため、使用には注意してください。

おすすめ

転載: blog.csdn.net/weixin_74850661/article/details/132773448