Lớp công cụ
RunService
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Tóm Tắt
Thuộc Tính
Phương Pháp
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):() |
Sự Kiện
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 |
Tài Liệu Tham Khảo API
Thuộc Tính
Phương Pháp
BindToRenderStep
Lợi Nhuận
()
Mẫu mã
Khung Di Chuyển Trong Hình Tròn
local RunService = game:GetService("RunService")
-- Tốc độ mà khung nên di chuyển
local SPEED = 2
local frame = script.Parent
frame.AnchorPoint = Vector2.new(0.5, 0.5)
-- Một phương trình tham số đơn giản của một hình tròn
-- nằm ở (0.5, 0.5) với bán kính (0.5)
local function circle(t)
return 0.5 + math.cos(t) * 0.5, 0.5 + math.sin(t) * 0.5
end
-- Theo dõi thời gian hiện tại
local currentTime = 0
local function onRenderStep(deltaTime)
-- Cập nhật thời gian hiện tại
currentTime = currentTime + deltaTime * SPEED
-- ...và vị trí của khung
local x, y = circle(currentTime)
frame.Position = UDim2.new(x, 0, y, 0)
end
-- Đây chỉ là một hiệu ứng hình ảnh, vì vậy hãy sử dụng độ ưu tiên "Cuối"
RunService:BindToRenderStep("FrameCircle", Enum.RenderPriority.Last.Value, onRenderStep)
--RunService.RenderStepped:Connect(onRenderStep) -- Cũng hoạt động, nhưng không được khuyến nghịHàm Tùy Chỉnh RunService
local RunService = game:GetService("RunService")
local function checkDelta(deltaTime)
print("Thời gian kể từ bước vẽ cuối:", deltaTime)
end
RunService:BindToRenderStep("Kiểm tra delta", Enum.RenderPriority.First.Value, checkDelta)Gán và Hủy Gán Một Hàm
local RunService = game:GetService("RunService")
-- Bước 1: Khai báo hàm và một tên
local NAME = "In ấn Hello"
local function printHello()
print("Xin chào")
end
-- Bước 2: Gán hàm
RunService:BindToRenderStep(NAME, Enum.RenderPriority.First.Value, printHello)
-- Bước 3: Hủy gán hàm
RunService:UnbindFromRenderStep(NAME)BindToSimulation
RunService:BindToSimulation(
Tham Số
| Giá Trị Mặc Định: "Hz30" |
| Giá Trị Mặc Định: 2000 |
Lợi Nhuận
Mẫu mã
Đồng bộ hóa thuộc tính màu của một phần
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
Tham Số
Lợi Nhuận
Pause
RunService:Pause():()
Lợi Nhuận
()
Reset
Run
RunService:Run():()
Lợi Nhuận
()
SetPredictionMode
Tham Số
Lợi Nhuận
()
Stop
RunService:Stop():()
Lợi Nhuận
()
Sự Kiện
Misprediction
Tham Số
Mẫu mã
Dự đoán sai
local RunService = game:GetService("RunService")
RunService.Misprediction:Connect(function(time, instances, stats)
print(`Dự đoán sai tại t={time}, resim={stats.ResimulationTime}s`)
for _, entry in instances do
print(` Instance: {entry.Instance:GetFullName()}`)
if entry.Properties then
for name, values in entry.Properties do
print(` Thuộc tính '{name}': dự đoán={values.Predicted}, có thẩm quyền={values.Authoritative}`)
end
end
if entry.Attributes then
for name, values in entry.Attributes do
print(` Thuộc tính '{name}': dự đoán={values.Predicted}, có thẩm quyền={values.Authoritative}`)
end
end
end
end)PostSimulation
PreSimulation
Rollback
Tham Số
Mẫu mã
Khôi phục
local RunService = game:GetService("RunService")
local stateHistory = {} -- trạng thái tùy chỉnh của bạn được theo dõi theo bước cố định
RunService.Rollback:Connect(function(time)
-- Bỏ qua bất kỳ trạng thái tùy chỉnh nào mới hơn bước đã khôi phục
-- và khôi phục trạng thái tại bước đó trước khi bắt đầu tái mô phỏng
for step, _ in stateHistory do
if step > time then
stateHistory[step] = nil
end
end
end)Stepped