任務排程器

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

任務排程器協調遊戲運行過程中每一幀所完成的任務,即使在暫停時也是如此。這些任務包括檢測玩家輸入、動畫角色、更新物理模擬,以及恢復處於 task.wait() 狀態的腳本。

儘管可能有多個任務在運行,但任務排程器有可能會過載,特別是在以下情況下:

  • 使用自訂的角色骨架或輸入方案。
  • 自行動畫化部件(而非使用 Animator)。
  • 嚴重依賴精確的物理效果。
  • 定期重複物件。

RunService

逐幀添加任務的最直接方法是通過 RunService 的以下成員:

排程器優先權

任務排程器會根據以下順序對任務進行分類和完成。有些任務可能在一幀內不執行工作,而其他任務則可能多次運行。

* 在 RunService.Heartbeat 期間腳本執行會根據你遊戲的 Workspace.SignalBehavior 設定而有所不同。請參見 延遲事件

最佳實踐

為了在效率上構建高效能遊戲,請注意以下事項:

  • 除非絕對必要,請不要將函數連接/綁定到渲染步驟。 只有必須在輸入之後但在渲染之前完成的任務應以這種方式執行,例如攝影機移動。若需對執行順序進行嚴格控制,請使用 BindToRenderStep(),而非 PreRender

  • 仔細管理物理狀態。 PreSimulation 發生在物理運算 之前,而 PostSimulation 發生在物理運算 之後。因此,影響物理狀態的遊戲邏輯應在 PreSimulation 中執行,例如設定部件的 Velocity。相對地,依賴或響應物理狀態的遊戲邏輯應在 PostSimulation 中處理,例如讀取部件的 Position 以檢測它們何時進入定義區域。

  • Motor6D 變換變更應在 PreSimulation 事件中進行。 如果不這樣做,Animators 將在下一幀覆寫變更。即使沒有 AnimatorPreSimulation 也是在應用 Motor6D.Transform 到部件位置之前被觸發的最後一個 Luau 事件。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。