タスクライブラリ は、エンジンのスケジューラーで機能とスレッドをスケジュールできるようにします。 このライブラリにある機能は、一般に機能とスレッドをサポートします。ほとんどの場合、機能を使用するだけで十分ですが、より高度なケースでは、coroutine ライブラリに精通することをお勧めします。
概要
関数
エンジンのスケジューラを通じてすぐに機能/コルーチンを呼び出し/再開します。
現在の再開サイクルの終わりに機能/コルーチンを呼び出し/再開する。
指定された期間 (秒) 後の次のハートビートで呼び出されたり再開された機能/コルーチンをスケジュールし、スロットリングを行わない。
次のコードが並行して実行されるようにします。
次のコードがシリアルで実行されるようにします。
スロットリングなしで現在のスレッドを返します。
スレッドをキャンセルし、再開されないようにします。
関数
spawn
機能またはスレッド (coroutine.create() によって返されるもの) を受け入れ、エンジンのスケジューラを通じてすぐに呼び出し/再開します。最初の後の引数は、機能/スレッドに送信されます。
呼び出しスクリプトが現在、連続実行フェーズで実行されている場合、生成された関数またはスレッドは、現在の連続実行フェーズで再開されます。呼び出しスクリプトが現在並列実行フェーズで実行されている場合、生成された関数またはスレッドは、現在の並列実行フェーズで再開されます。詳しくは、パラレル Luauを参照してください。
パラメータ
coroutine.create() によって返された関数またはスレッド。
機能またはスレッドに送信する引数。
戻り値
スケジュールされたスレッド。
defer
機能またはスレッド (coroutine.create() によって返される) を受け入れ、現在のフレーム内の現在の再開ポイントの終わりまで遅延します。
この機能は、task.spawn() に似た動作が望ましいが、スレッドがすぐに実行する必要はない場合に使用する必要があります。
呼び出しスクリプトが現在シリアル実行フェーズで実行されている場合、遅延した関数またはスレッドはシリアル実行フェーズで再開されます。呼び出しスクリプトが現在並列実行フェーズで実行されている場合、遅延した関数またはスレッドは並列実行フェーズで再開されます。詳しくは、パラレル Luauを参照してください。
パラメータ
戻り値
スケジュールされたスレッド。
delay
機能またはスレッド (coroutine.create() によって返される) を受け入れ、指定された秒数の後に次の Heartbeat で呼び出されたり再開されたりするようにスケジュールします。2番目の後の引数は、機能/スレッドに送信されます。
この機能は、廃止されたグローバル delay() 機能と異なり、 制限が発生しない :同じHeartbeatで、十分な時間が経過した後、機能は呼び出されたり再開されたり保証されます。期間ゼロ ( 0 ) を提供すると、機能が次の Heartbeat に呼ばれることを保証できます。
スケジュールとスケジュールされた機能内で os.clock() を呼び出して実際の時間を計算できます。
呼び出しスクリプトが現在、シリアル実行フェーズで実行されている場合、遅延した機能またはスレッドはシリアル実行フェーズで再開されます。呼び出しスクリプトが現在パラレル実行フェーズで実行されている場合、遅延した関数またはスレッドはパラレル実行フェーズで再開されます。詳しくは、パラレル Luauを参照してください。
パラメータ
戻り値
スケジュールされたスレッド。
desynchronize
呼び出しスクリプトが現在、シリアル実行フェーズで実行されている場合、desynchronize() はスクリプトを一時停止し、スクリプトは次の並列実行フェーズで再開されます。呼び出しスクリプトが現在並列実行フェーズで実行されている場合、desynchronize() はすぐに返され、効果はありません。
の子孫であるスクリプトのみがこのメソッドを呼び出すことができます。Only scripts which are descendants of an Actor may call this method.スクリプトが Actor の外でこのメソッドを呼び出すと、エラーが発生します。ModuleScripts は、モジュールを呼び出すスクリプトが、desynchronize() の子孫であるスクリプトによって必要とされた限り、Actor のインスタンス化を呼び出すこともできます。
詳しくは、パラレル Luauを参照してください。
戻り値
synchronize
呼び出しスクリプトが現在並列実行フェーズで実行されている場合、synchronize() はスクリプトを停止し、次のシリアル実行フェーズで再開されます。呼び出しスクリプトが現在、シリアル実行フェーズで実行されている場合、synchronize() はすぐに返され、効果はありません。
の子孫であるスクリプトのみがこのメソッドを呼び出すことができます。Only scripts which are descendants of an Actor may call this method.スクリプトが Actor の外でこのメソッドを呼び出すと、エラーが発生します。ModuleScripts は、モジュールを呼び出すスクリプトが、synchronize() の子孫であるスクリプトによって必要とされた限り、Actor のインスタンス化を呼び出すこともできます。
詳しくは、パラレル Luauを参照してください。
戻り値
wait
指定された期間(秒)が経過するまで現在のスレッドを返し、次の Heartbeat ステップでスレッドを再開します。実際に経過した時間が返されます。
期間が指定されない場合、デフォルトでゼロ ( 0 ) になります。これは、スレッドが次のステップで再開することを意味し、動作では Class.RunService.Heartbeat:Wait() と同等
廃止されたグローバル wait() とは異なり、この関数 はスロットルをかけず、必要に応じてスレッドの再開を保証します 。この機能は、期間時間と他の何も返さないこともあります。
呼び出しスクリプトが現在、連続実行フェーズで実行されている場合、スクリプトは連続実行フェーズで再開されます。呼び出しスクリプトが現在並列実行フェーズで実行されている場合、スクリプトは並列実行フェーズで再開されます。詳しくは、パラレル Luauを参照してください。
パラメータ
現在のスレッドが再開される前に過ぎ去る秒数の量。
戻り値
cancel
スレッドをキャンセルして閉じ、エンジンのスケジューラーまたは手動で再開することを防ぎます。
この機能は、スレッドをキャンセルする前に再開されるように、 タスク ライブラリの他のメンバーと一緒に使用できます。例えば:
local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)
スレッドがキャンセルできない状態にある可能性をご注意ください。たとえば、現在実行中のスレッドと他のコルーチンを再開したスレッドはキャンセルできない可能性があります。この場合、エラーが生成されます。しかし、コードは task.cancel() が失敗する特定のスレッド状態または条件に依存してはならない。将来のアップデートでこれらの制約が排除され、これらの状態のスレッドを成功裏にキャンセルできるようになる可能性があります。
パラメータ
キャンセルされるスレッド。