Scheduling-Code

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

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 sekunden
print(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.