task

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

任務 庫允許功能和線程使用引擎的排程器進行排程。

這個庫中的功能一般支持功能和線程。在大多數情況下,使用函數即可足夠,但對於更進階的情況來說,建議您熟悉 coroutine 圖書館。

概要

函式

函式

接受一個功能或線程(由 coroutine.create() 返回)並立即通過引擎的排程工作排程器呼叫/恢復它。在第一個之後的參數會傳送到功能/線程。

如果呼叫腳本目前正在串行執行階段運行,則生成的函數或線程在當前串行執行階段中被恢復。如果呼叫腳本目前正在並行執行階段運行,則生成的函數或線程在當前並行執行階段中被恢復。欲了解更多信息,請參閱 並行 Luau

參數

functionOrThread: function | coroutine

coroutine.create() 返回的功能或線程。

...: Variant

傳送到功執行緒或線程的參數。

返回

預定的執行緒。

接受一個功能或線程(由 coroutine.create() 返回)並將它延遲到當前框架中的現有暫停點結束。

此功能應在需要類似於 task.spawn() 的行為時使用,但線程不需要立即運行。

如果呼叫腳本目前正在串行執行階段運行,則延遲的功能或線程在串行執行階段會被恢復。如果呼叫腳本目前正在並行執行階段運行,則延遲的功能或線程在並行執行階段會被恢復。欲了解更多信息,請參閱 並行 Luau

參數

functionOrThread: function | coroutine

coroutine.create 返建立、創作的函數或線程。

...: Variant

傳送到功執行緒或線程的參數。

返回

預定的執行緒。

接受一個函數或線程(由 coroutine.create() 返回)並將其安排在指定的時間後的下一個Heartbeat中被呼叫/重新啟動。第二個以後的參數傳送到功能/線程。

此功能與過時的全球 功能不同,在 沒有限制發生:在足夠長的時間過去的同一步驟中,該功能保證被稱為/重新啟動。提供零的持續時間( 0 )將保證函數在下一秒Heartbeat 上被呼叫。

您可以通過在預定和預定函數中呼叫 os.clock() 來計算實際通過的時間。

如果呼叫腳本目前正在串行執行階段運行,則延遲的功能或線程在串行執行階段會被恢復。如果呼叫腳本目前正在並行執行階段運行,則延遲的功能或線程在並行執行階段會被恢復。欲了解更多信息,請參閱 並行 Luau

參數

duration: number

在呼叫/重新啟動功能/線程之前必須通過的最小秒數。

functionOrThread: function | coroutine
...: Variant

在呼叫/重新啟動功能/線程時傳送給功能/線程的參數。

返回

預定的執行緒。

desynchronize

()

如果呼叫腳本目前正在串行執行階段運行,desynchronize()將暫停腳本,腳本將在下一個並行執行階段重新啟動。如果呼叫腳本目前正在並行執行階段運行,desynchronize() 將立即返回並沒有效果。

只有從 Actor 擴展的腳本才能呼叫此方法。如果腳本在 Actor 之外呼叫此方法,將會發生錯誤。ModuleScripts 也可以呼叫 desynchronize() ,只要模組呼叫的實例化被 Actor 的子孫所需要的腳本即可。

欲了解更多信息,請參閱 並行 Luau

返回

()

synchronize

()

如果呼叫腳本目前正在並行執行階段運行,synchronize()將暫停腳本,腳本將在下一個串行執行階段繼續運行。如果呼叫腳本目前正在串行執行階段運行,synchronize() 將立即返回並沒有效果。

只有從 Actor 擴展的腳本才能呼叫此方法。如果腳本在 Actor 之外呼叫此方法,將會發生錯誤。ModuleScripts 也可以呼叫 synchronize() ,只要模組呼叫的實例化被 Actor 的子孫所需要的腳本即可。

欲了解更多信息,請參閱 並行 Luau

返回

()

wait

在指定的時間(秒)過後,將現有線程保留到期,然後在下一步的 Heartbeat 步中恢復線程。實際經過的時間數返回。

如果沒有提供期限,它會默認為零(0)。這意味著線程在下一步繼續運行,在行為上與 Class.RunService.Heartbeat:Wait() 相等

與過時的全球 wait() 不同,此函數 不會限制 並保證在到期時發生的第一個心跳中暫停線程。此功能也只返回已過時間和沒有其他內容。

如果呼叫腳本目前正在進行串行執行階段,則腳本在串行執行階段會被重新啟動。如果呼叫腳本目前正在並行執行階段運行,則腳本在並行執行階段會重新啟動。欲了解更多信息,請參閱 並行 Luau

參數

duration: number

在現有線程重新啟動前應過期的秒數數量。

預設值:0

返回

cancel

()

取消線程並關閉它,防止它被手動重新啟動或由引擎的排程器重新啟動。

這個功能可以與其他會返回線程以取消它們之前被恢復的 任務 圖書館成員一起使用。例如:


local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)

請注意,線程可能處於一個狀態,無法取消它們。例如,目前執行的線程和已恢復另一個任務的線程可能無法取消。如果這是情況,錯誤將被生成。然而,代碼不應依賴特定線程狀態或條件導致 task.cancel() 失敗。未來的更新可能會消除這些限制,並允許這些狀態的線程成功取消。

參數

thread: coroutine

將被取消的線程。

返回

()