スケジュールコードは、コードが特定のアクションまたはサイクルが完了した後に実行されるようにするか、または特定の期間の時間を延遅するなど、多くの状況で便利です。task ライブラリを使用して、Roblox の タスクスケジュー
一般的なメソッド
次のコードスケジュールを作成するための最も一般的な task メソッドは次のとおりです。タスクメソッドは、wait() などのレガシースケジュールメソッドを使用して、コードを最適に実行する必要があります。
次の表には、関連するレガシーグローバルメソッドとそのプレイヤーの最適化された代替方法がリストされています:
| ローグイン | ログアウト | 追加のオプション | | wait(n) | Library.task. MRGBe | Library.task. wait(0, f
タスクスポーン
task.spawn() はスレッドまたは関数を取得し、エンジンのスケジューラーを介してすぐに 続行 します。追加の引数は、スレッドまたは関数が再開されているスレッドにパスされます。
次のコードサンプルは、task.spawn() を使用する方法の例で、オブジェクトのセットをイテレートする機能を呼び出しているコードを実行する方法を示しています:
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
タスクをディフェラ
task.defer() はスレッドまたは関数を取り、次の 休憩サイクル までに押し出します。その後、エンジンのスケジューラーで再開されます。追加の引数はスレッドまたは関数に再出力されます。
これは、同じ動作を task.spawn() したいときに使用するべきですが、スレッドを即座に実行したくはありません。次のコードサンプルは、print() のステートメントのための "A" がスレッドを即座に実行するのを遅らせ
task.defer(print, "A")print("B")--> B--> A
タスクの遅延
task.delay() はスレッドまたは関数を取り、次の Heartbeat ステップの後に再開するスケジュールを設定します。スレッドは、内蔵エラー処理とサポート、その他のエンジン機能に対応するように構築されています。任意の引数は、スレッドまた
実際の遅延時間が異なるため、次のコードサンプルでは、現在の時間を引数として渡すことでそれを計算する方法を示しています:
task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())
ゼロの持続により、スレッドまたは関数が次のステップで再開されます。
タスクを待つ
task.wait() は、指定された期間 (in seconds) が切れるまでの現在のスレッドを表示し、その後、次の Heartbeat ステップでスレッドを再開します。
実際の生成時間は変更される場合があります。次のコードサンプルは、このメソッドが便利に戻す方法を示しています:
実際の遅延時間が異なるため、次のコードサンプルでは、メソッドの返却値を保存して実際の時間を取得する方法を示しています:
local elapsedTime = task.wait(2) -- 2秒待つprint(elapsedTime) --> 2.0792941
期間が与えられない場合、期間はデフォルトで 0 になります。これにより、スレッドは次のステップで自動的に再開されます。これは、task.wait() が動作として、RunService.Heartbeat と同等です。