タスクライブラリには、 タスク スケジューラーでスケジュールできる関数とスレッドがあります。
このライブラリにある関数は、一般に機能とスレッドをサポートします。ほとんどの場合、機能を使用することで十分ですが、より高度な場合は、coroutine ライブラリに熟悉することをお勧めします。
概要
関数
すぐにエンジンスケジューラーを介して関数/ルーティンを呼び出します。
現在のサマーミーティングサイクルの終了に関連する関数/ルーティンを呼び出します。Calls/resumes a function/coroutine at the end of the current resumption cycle.
指定された期間 (秒単位) が過ぎた後に、次の心音で呼び出される関数/コルーチンをスケジュールします。
次のコードを並行して実行させる。
次のコードをシリアルで実行させる。
現在のスレッドをスロートしないで、指定された期間(秒)が過ぎるまで、次のハートビートに合わせて実行します。
スレッドをキャンセルし、再開されないようにします。
関数
spawn
coroutine.create によって返される関数またはスレッドを受信し、エンジンのスケジューラーを介してすぐに呼び出します。最初の引数は関数/スレッドに送信されます。
この関数は、deprecated global spawn 機能の代わりではなく、FastSpawn パターンに基づいています。この関数は、FastSpawn の代わりに使用することをお勧めします。
現在、シリアル実行フェーズでスクリプトが実行されている場合、スポーンされた関数またはスレッドは現在のシリアル実行フェーズで再開されます。如果、現在、シリアル実行フェーズでスクリプトが並行して実行されている場合、スポーンされた関数またはスレッドは現在の並行実行フェーズで再開されます。詳細は、「パラレル Lu
パラメータ
戻り値
スケジュールされたスレッド。
defer
coroutine.create によって返される関数またはスレッドを受け入れ、現在のリストサイクルの終了まで、エンジンのスケジューラーと同様に、 task.spawn() のアルガリズムを実行します。最初の引数は、Library.task.spawn に送信されます。
この関数は、「Library.task.spawn()」のような同様の動作が望ましい場合に使用する必要がありますが、スレッドは即座に実行する必要はありません。
現在、実行スクリプトがシリアル実行フェーズで実行されている場合、遅延機能またはスレッドはシリアル実行フェーズで再開されます。現在、実行スクリプトが並列実行フェーズで実行されている場合、遅延機能またはスレッドは並列実行フェーズで再開されます。詳細は、「パラレル Luau」を参照してください。
パラメータ
戻り値
スケジュールされたスレッド。
delay
coroutine.create によって返される関数またはスレッドを受信し、次の Heartbeat における呼び出し/再開スケジュールをスケジュールします。2つ目の引数は関数/スレッドに送信されます。
この関数は、delay 関数のグローバルデプレットされた後に、同じ心音ステップで、十分な時間が経過したときにのみ使用されます。同じ心音ステップで、十分な時間が経過したとき、関数は保証されて呼び出されます/再開されます。提供する期間を 0 にすると、関数は次の心
実際の時間を計算するには、os.clock() をスケジュールして、スケジュールされた関数で呼び出す必要があります。
現在、実行スクリプトがシリアル実行フェーズで実行されている場合、遅延機能またはスレッドはシリアル実行フェーズで再開されます。現在、実行スクリプトが並列実行フェーズで実行されている場合、遅延機能またはスレッドは並列実行フェーズで再開されます。詳細は、「パラレル Luau」を参照してください。
パラメータ
戻り値
スケジュールされたスレッド。
desynchronize
現在、シリアル実行フェーズでスクリプトが実行されている場合、desynchronize はスクリプトを一時停止し、次のパラレル実行フェーズでスクリプトが再開されます。desynchronize は、すぐに戻り、効果はありません。
アクターの子孫であるスクリプトのみがこのメソッドを呼び出すことができます。アクター以外のスクリプトがこのメソッドを呼び出すと、エラーが発生します。ModuleScript は、モジュールスクリプトを呼び出すたびに desynchronize を呼び出すこともできます。
For more information, see パラレル Luau .
戻り値
synchronize
現在、並列実行フェーズでスクリプトを実行している場合、synchronize はスクリプトを一時停止し、次のシリアル実行フェーズでスクリプトが再開されます。synchronize は、即座に戻り、影響を与えません。
アクターの子孫であるスクリプトのみがこのメソッドを呼び出すことができます。アクター以外のスクリプトがこのメソッドを呼び出すと、エラーが発生します。ModuleScript は、モジュールスクリプトを呼び出すたびに synchronize を呼び出すこともできます。
For more information, see パラレル Luau .
戻り値
wait
現在のスレッドを現在の期限 (in seconds) に到達するまでに生成し、次の Heartbeat ステップでスレッドを再開します。実際のスレッドの時間が返されます。
期間が与えられない場合、デフォルトは 0 です (0)。これは、スレッドが次のステップで再開することを意味します (これは、動作として同等です)。
非推奨のグローバル wait とは異なり、この関数 はスロットを制限しません 、および、心音が発生するときにスレッドを再開することを保証します。この関数は、すべての時間を返します。
現在、呼び出しスクリプトがシリアル実行フェーズで実行されている場合、スクリプトはシリアル実行フェーズで再開されます。呼び出しスクリプトが現在、並列実行フェーズで実行されている場合、スクリプトは並列実行フェーズで再開されます。詳細は、パラレル Luauを参照してください。
パラメータ
現在のスレッドが再開される前にかかる時間の秒数。
戻り値
cancel
スレッドをキャンセルし、終了します。これにより、手動で再開するか、タスクスケジューラーによって再開されることはできません。
この機能は、タスクライブラリの他のメンバーがスレッドをキャンセルする前に返すことができます。たとえば:
local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)
注: スレッドは、取り消すことができない状態にある可能性があります。たとえば、現在実行中のスレッドと再開されたコルーチンを持つスレッドは、取り消すことはできません。この場合、Lua エラーが生成されます。
しかし、コードは task.cancel() を失敗させる特定のスレッド状態やコンディションに頼りするべきではありません。将来の更新でこれらの制限を排除し、これらの状態のスレッドを成功してキャンセルできるようになる可能性があります。
パラメータ
キャンセルするスレッド。