RunService

RunService 可以用於動畫。它還允許處理即時更新和逐幀控制。

事件詳情
Heartbeat每幀在物理模擬完成後觸發。
PostSimulation每幀在物理模擬完成後觸發。
PreAnimation每幀在物理模擬之前但在渲染之後觸發。
PreRender每幀在渲染之前觸發。
PreSimulation每幀在物理模擬之前觸發。
RenderStepped每幀在渲染之前觸發。
Stepped每幀在物理模擬之前觸發。

RunService 與 wait()

local part = Instance.new("Part")
part.Size = Vector3.new(4, 4, 4)
part.Position = Vector3.new(0, 5, 0)
part.Anchored = true
part.Parent = workspace

local speed = 5 -- studs per second

spawn(function()
    while true do
        wait(0.033) -- Approximate wait time for 30 FPS (Frame per second)
        part.Position = part.Position + Vector3.new(speed * 0.033, 0, 0)
    end
end)
wait() 的精確度較低,時間可能會有所波動,導致動畫不太流暢。

RunService 與 TweenService

  • 適合平滑、可預測的動畫。
  • 最佳用於簡單的屬性過渡。
  • 內建的緩動樣式使用方便。
  • TweenService 利用類似 RunService 的機制來確保動畫平滑,包括使用 delta time 進行屬性的幀獨立插值。
  • 適合即時動態更新。
  • 允許逐幀控制。
  • 可用於動畫以外的各種任務。
  • RenderStepped 與渲染過程相關聯,該過程在客戶端發生,因此僅限於 LocalScripts。

RunService 使用案例範例

範例詳情
Custom Render Logic3D GUIs: 創建並更新必須跟隨遊戲世界中的部件或角色的 3D GUI 元素。
Player-Exclusive Features本地遊戲機制:實現僅影響本地玩家的功能或機制,例如本地獨有的粒子效果或照明變化。
Camera Manipulation動態相機控制:根據玩家操作或遊戲事件平滑地更新相機的位置、方向或焦點,以創造更具沉浸感的體驗。