Der Scheduling-Code ist in vielen Situationen nützlich, z. B. um sicherzustellen, dass der Code nach einer bestimmten Aktion oder Zyklus abgeschlossen ist, oder um den Code für eine bestimmte Zeit verzögert. Sie können die task -Bibliothek verwenden, um die Task-Scheduler von Roblox zu optimieren, um Code zu verwalten und zu planen. Sie können auch
Gewöhnliche Methoden
Die folgenden sind die häufigsten task - Methoden, die verwendet werden, um Codeszu planen. Sie sollten die Task- Methoden überlegen, wie z. B. wait(), um sicherzustellen, dass Ihr Code effizient ausgeführt wird.
Die folgende Tabelle listet die relevanten globalen Methoden und ihre bevorzugten, effizienteren Alternativen:
| Legacy Global Methods | Task- Methoden | | Additional Alternatives | | | : | : - | | | : | | wait() | | | | <
task.spawn
task.spawn() nimmt einen Thread oder eine Funktion auf und wiederholt sie sofort durch den Aufgabenplaner. Zusätzliche Argumente werden dem Thread oder der Funktion, die wiederholt wird, übergeben.
Das folgende Codebeispiel zeigt, wie Sie task.spawn() verwenden können, wenn Sie eine Funktion aufrufen, die während der Iteration über ein Set von Objekten laufen kann:
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
task.defer
task.defer() nimmt einen Thread oder eine Funktion und verzögert sie bis zum nächsten Resum-Zyklus, bei dem sie mit dem Aufgabenplanerwieder aufgenommen wird. Weitere Argumente werden dem Thread oder der Funktion Resum übergeben.
Du solltest dies in der Regel verwenden, wenn du ähnliches Verhalten wie task.spawn() willst, aber dir egal ist, wie der Thread sofort ausgeführt wird. Das folgende Codebeispiel zeigt, wie die print()-Anweisung für "A" nach der Ausführung von 1> "B"1> ausfallen wird:
task.defer(print, "A")print("B")--> B--> A
verzögerung der aufgabe
task.delay() nimmt einen Thread oder eine Funktion und planiert ihn für die Fortsetzung nach der gegebenen Zeit elapsen auf der nächsten Heartbeat Schritt. Der Thread wird mit integriertem Fehler-Handling und Unterstützung für andere Engine-Funktionen fortgesetzt. Alle zusätzlichen Argumente werden an den Thread oder die Funktion weitergegeben.
Da die tatsächliche Verzögerungszeit variieren kann, zeigt das folgende Codebeispiel, wie Sie es berechnen können, indem Sie die aktuelle Zeit als Argument übergeben:
task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())
Die Dauer von null wird in der Thread oder Funktion fortgesetzt, wenn der nächste Schritt erneut ausgeführt wird.
task.warten
task.wait() gibt den aktuellen Thread bis zur angegebenen Dauer (in Sekunden) zurück und startet dann den Thread auf der nächsten Heartbeat-Schritt fort.
Die tatsächliche Erntetzeit kann variieren. Das folgende Codebeispiel zeigt, wie diese Methode für den Komfort zurückgibt:
Da die tatsächliche Verzögerungszeit variieren kann, zeigt das folgende Codebeispiel, wie Sie die tatsächliche Zeit erhalten können, indem Sie den Rückgabewert der Methode speichern:
local elapsedTime = task.wait(2) -- warte 2 sekundenprint(elapsedTime) --> 2.0792941
Wenn keine Dauer angegeben wird, wird die Dauer standardmäßig auf null zurückgesetzt, wodurch der Thread auf der nächsten Schaltfläche automatisch wieder aufgenommen wird. Dies bedeutet, dass task.wait() im Verhalten gleichbedeutend mit RunService.Heartbeat ist.