概要
方法
BindToRenderStep(name: string,priority: number,function: function):() |
BindToSimulation(function: function,frequency: Enum.StepFrequency,priority: number):RBXScriptConnection |
GetPredictionStatus(context: Instance):Enum.PredictionStatus |
Pause():() |
Reset():() |
Run():() |
SetPredictionMode(context: Instance,mode: Enum.PredictionMode):() |
Stop():() |
UnbindFromRenderStep(name: string):() |
活動
Heartbeat(deltaTime: number):RBXScriptSignal |
Misprediction(time: number,instances: {any},stats: Dictionary):RBXScriptSignal |
PostSimulation(deltaTimeSim: number):RBXScriptSignal |
PreAnimation(deltaTimeSim: number):RBXScriptSignal |
PreRender(deltaTimeRender: number):RBXScriptSignal |
PreSimulation(deltaTimeSim: number):RBXScriptSignal |
RenderStepped(deltaTime: number):RBXScriptSignal |
Rollback(time: number):RBXScriptSignal |
Stepped(time: number,deltaTime: number):RBXScriptSignal |
API 參考
屬性
方法
BindToRenderStep
返回
()
範例程式碼
圍繞圓圈移動的框架
local RunService = game:GetService("RunService")
-- 框架應該移動的速度
local SPEED = 2
local frame = script.Parent
frame.AnchorPoint = Vector2.new(0.5, 0.5)
-- 一個簡單的圓形參數方程式
-- 以 (0.5, 0.5) 為中心,半徑為 (0.5)
local function circle(t)
return 0.5 + math.cos(t) * 0.5, 0.5 + math.sin(t) * 0.5
end
-- 跟蹤當前時間
local currentTime = 0
local function onRenderStep(deltaTime)
-- 更新當前時間
currentTime = currentTime + deltaTime * SPEED
-- ...以及框架的位置
local x, y = circle(currentTime)
frame.Position = UDim2.new(x, 0, y, 0)
end
-- 這只是一個視覺效果,因此使用 "Last" 優先級
RunService:BindToRenderStep("FrameCircle", Enum.RenderPriority.Last.Value, onRenderStep)
--RunService.RenderStepped:Connect(onRenderStep) -- 也可以使用,但不建議RunService 自訂函式
local RunService = game:GetService("RunService")
local function checkDelta(deltaTime)
print("自上次渲染步驟以來的時間:", deltaTime)
end
RunService:BindToRenderStep("檢查時間距離", Enum.RenderPriority.First.Value, checkDelta)綁定和解除綁定函數
local RunService = game:GetService("RunService")
-- 第 1 步:聲明函數和名稱
local NAME = "打印你好"
local function printHello()
print("你好")
end
-- 第 2 步:綁定函數
RunService:BindToRenderStep(NAME, Enum.RenderPriority.First.Value, printHello)
-- 第 3 步:解除綁定函數
RunService:UnbindFromRenderStep(NAME)BindToSimulation
RunService:BindToSimulation(
參數
| 預設值:"Hz30" |
| 預設值:2000 |
範例程式碼
同步零件的顏色屬性
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local somePart:BasePart = Workspace:WaitForChild("Part")
RunService:BindToSimulation(function(deltaTime: number)
-- 計算同步的顏色
local syncdColor = Color3.fromHSV(math.fmod(time(), 1.0), 1.0, 1.0)
somePart:SetAttribute("SyncdColor", syncdColor)
end)
RunService.RenderStepped:Connect(function(deltaTime: number)
-- 更新零件顏色
local syncdColor = somePart:GetAttribute("SyncdColor")
somePart.Color = syncdColor
end)GetPredictionStatus
參數
Pause
RunService:Pause():()
返回
()
Reset
Run
RunService:Run():()
返回
()
SetPredictionMode
參數
返回
()
Stop
RunService:Stop():()
返回
()
活動
Misprediction
參數
Stepped