呼び出す
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");
}
上記の例のメソッドはCancelDelayedCall
1 秒後に呼び出され、メソッドへの遅延呼び出しは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
使用して繰り返しの呼び出しをキャンセルすることもできます。CancelInvoke
InvokeRepeating
つまり、InvokeRepeating
これは Unity で定期的に繰り返されるタスクを作成するために使用される方法であり、関数を定期的に実行する必要があるシナリオに適しています。ただし、繰り返し呼び出しを過度に使用するとパフォーマンスに影響を与える可能性があるため、使用には注意してください。