RunService

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
บริการ
ไม่ซ้ำ

RunService มีวิธีการและเหตุการณ์สำหรับการจัดการเวลาเช่นเดียวกับการจัดการบริบทที่การประสบการณ์หรือสคริปต์กำลังดำเนินอยู่วิธีการเช่น IsClient() , IsServer() และ IsStudio() สามารถช่วยคุณกำหนดสถานการณ์ที่รหัสโค้ดกำลังดำเนินอยู่วิธีเหล่านี้มีประโยชน์สำหรับ ModuleScripts ที่อาจต้องการโดยทั้งสคริปต์ไคลเอนต์และเซิร์ฟเวอร์นอกจากนี้ IsStudio() สามารถใช้เพื่อเพิ่มพฤติกรรมพิเศษสำหรับการทดสอบในสตูดิโอ

RunService ยังมีกิจกรรมที่ช่วยให้โค้ดของคุณสอดคล้องกับลูปเฟรมต่อเฟรมของ Roblox เช่น PreRender , PreAnimation , PreSimulation , PostSimulation และ Heartbeatการเลือกอีเวนต์ที่เหมาะสมที่จะใช้สำหรับกรณีใดๆ เป็นสิ่งสำคัญดังนั้นคุณควรอ่าน ตัวกำหนดเวลางาน เพื่อตัดสินใจอย่างมีข้อมูล

ผลการทดสอบบริบท

<th><code>Class.RunService:IsStudio()|IsStudio
สิ่งที่ต้องทำ
คลาส .RunService:IsStudio()|IsStudio</code></th>
<th><code>Class.RunService: เป็นลูกค้า()|IsClient</code></th>
<th><code>Class.RunService: เป็นเซิร์ฟเวอร์()|IsServer</code></th>
<th><code>Class.RunService: เป็นการแก้ไข()|IsEdit</code></th>
<th><code>Class.RunService: กําลังดําเนินการ()|IsRunning</code></th>
<th><code>คลาส.RunService:IsRunMode()|IsRunMode</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>ผู้เล่นสด</td><td><code>ปิด</code></td><td><code>จริง</code></td><td><code>ปิด</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>เซิร์ฟเวอร์สด</td><td><code>ไม่ถูกต้อง</code></td><td><code>ไม่ถูกต้อง</code></td><td><code>ถูกต้อง</code></td>
<td />
<td />
<td />
</tr>
<tr>
<td>โหมดแก้ไข</td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>ปิด</code></td>
</tr>
<tr>
<td>แก้ไขร่วมกัน</td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>ปิด</code></td>
</tr>
<tr>
<td>โหมดการทำงาน</td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
</tr>
<tr>
<td>โหมดเล่น (ไคลเอนต์)</td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
</tr>
<tr>
<td>โหมดการเล่น (เซิร์ฟเวอร์)</td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
</tr>
<tr>
<td>การทดสอบทีม (ผู้เล่น)</td>
<td><code>จริง</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
</tr>
<tr>
<td>การทดสอบทีม (เซิร์ฟเวอร์)</td>
<td><code>ปิด</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
<td><code>จริง</code></td>
<td><code>ปิด</code></td>
</tr>
</tbody>
สภาพแวดล้อม

สรุป

คุณสมบัติ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    การรักษาความปลอดภัยของสคริปต์ Roblox
    อ่านพร้อมๆ กัน
  • ไม่ซ้ำ
    การรักษาความปลอดภัยของปลั๊กอิน
    อ่านพร้อมๆ กัน

วิธีการ

  • BindToRenderStep(name : string,priority : number,function : function):()

    ให้ชื่อสตริงของฟังก์ชันและลําดับความสําคัญ วิธีนี้จะผูกฟังก์ชันไปที่ RunService.PreRender

  • เขียนพร้อมๆ กัน

    ส่งคืนว่าสภาพแวดล้อมปัจจุบันกำลังทำงานบนไคลเอนต์หรือไม่

  • การรักษาความปลอดภัยของปลั๊กอิน
    เขียนพร้อมๆ กัน

    คืนว่าสภาพแวดล้อมปัจจุบันอยู่ในโหมด Edit หรือไม่

  • เขียนพร้อมๆ กัน

    คืนว่าปุ่ม เรียกใช้ ถูกกดเพื่อเรียกใช้การจำลองใน Studio

  • ส่งคืนว่าประสบการณ์กำลังดำเนินอยู่หรือไม่

  • เขียนพร้อมๆ กัน

    ส่งคืนว่าสภาพแวดล้อมปัจจุบันกำลังทำงานบนเซิร์ฟเวอร์หรือไม่

  • เขียนพร้อมๆ กัน

    ส่งคืนว่าสภาพแวดล้อมปัจจุบันกำลังทำงานใน Studio หรือไม่

  • Pause():()
    การรักษาความปลอดภัยของปลั๊กอิน

    หยุดการจำลองประสบการณ์หากกำลังดำเนินการ ระงับฟิสิกส์และสคริปต์

  • Run():()
    การรักษาความปลอดภัยของปลั๊กอิน

    ทำการจำลองเกม วิ่งฟิสิกส์และสคริปต์

  • Stop():()
    การรักษาความปลอดภัยของปลั๊กอิน

    หยุดการจำลองประสบการณ์หากกำลังดำเนินการ

  • ถอดฟังก์ชันที่ผูกกับลูปเรนเดอร์โดยใช้ RunService:BindToRenderStep() ออก

อีเวนต์

  • เผาไหม้ทุกเฟรมหลังจากการจำลองฟิสิกส์สําเร็จ

  • เผาไหม้ทุกเฟรมหลังจากการจำลองฟิสิกส์สําเร็จ

  • เผาไหม้ทุกเฟรมก่อนที่จะทำการจำลองทางฟิสิกส์ แต่หลังจากเรนเดอร์แล้ว

  • PreRender(deltaTimeRender : number):RBXScriptSignal

    เผาไหม้ทุกเฟรมก่อนที่จะเรนเดอร์เฟรม

  • เผาไหม้ทุกเฟรมก่อนที่จะทำการจำลองฟิสิกส์

  • เผาไหม้ทุกเฟรมก่อนที่จะเรนเดอร์เฟรม

  • Stepped(time : number,deltaTime : number):RBXScriptSignal

    เผาไหม้ทุกเฟรมก่อนที่จะทำการจำลองฟิสิกส์

คุณสมบัติ

ClientGitHash

อ่านอย่างเดียว
ไม่ซ้ำ
การรักษาความปลอดภัยของสคริปต์ Roblox
อ่านพร้อมๆ กัน
ไม่ซ้ำ
การรักษาความปลอดภัยของปลั๊กอิน
อ่านพร้อมๆ กัน

วิธีการ

BindToRenderStep

()

ฟังก์ชัน BindToRenderStep() ผูกฟังก์ชันที่กําหนดเองเพื่อโทรในเวลาที่เฉพาะในระหว่างขั้นตอนการเรนเดอร์มีสามข้อโต้แย้งหลัก: name , priority , และสิ่งที่ function ที่จะเรียก

เนื่องจากมันเชื่อมโยงกับกระบวนการเรนเดอร์ของไคลเอนต์ BindToRenderStep() สามารถเรียกได้เฉพาะในไคลเอนต์เท่านั้น

ชื่อ

พารามิเตอร์ name เป็นฉลากสำหรับการผูกและสามารถใช้กับ RunService:UnbindFromRenderStep() หากการผูกไม่จำเป็นอีกต่อไป


local RunService = game:GetService("RunService")
local function functionToBind() end
-- ผูกฟังก์ชันด้านบนกับการผูกชื่อว่า "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- ยกเลิกการผูกฟังก์ชันกับ "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
ลำดับความสำคัญ

priority ของการผูกมันเป็นจํานวนเต็ม; มันกำหนดเวลาที่จะเรียกฟังก์ชันกำหนดเองในระหว่างขั้นตอนการเรนเดอร์ยิ่งตัวเลขนี้ต่ำเท่าไร ก็จะเรียกฟังก์ชันกำหนดเองได้เร็วขึ้นเท่านั้นหากมีการผูกสองค่าเดียวกันมีลําดับความสําคัญเดียวกัน เครื่อง Roblox จะสุ่มเลือกหนึ่งรายการเพื่อทํางานก่อนสคริปต์ควบคุม Roblox เริ่มต้นจะทำงานด้วยความสําคัญเฉพาะเหล่านี้:

  • การป้อนของผู้เล่น: 100
  • การควบคุมกล้อง: 200 เพื่อความสะดวก; รายการเลือก Enum.RenderPriority สามารถใช้เพื่อกำหนดค่าเลขเต็มเพื่อตั้งค่าการผูกตัวอย่างเช่น เพื่อสร้างสิทธิ์ผูกก่อนการอัปเดตกล้องเริ่มต้น เพียงลบ 1 ออกจากระดับความสําคัญของกล้อง

เมื่อใช้ Enum.RenderPriority จำไว้ว่าต้องใช้ .Value ในตอนท้ายของ enum ที่ต้องการ RunService:BindToRenderStep() จะไม่ทำงานถ้าเพียงแค่ enum ถูกใช้เพียงอย่างเดียว


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- โค้ดในที่นี่จะทำงานก่อนสคริปต์กล้อง Roblox เริ่มต้น
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
ฟังก์ชันที่กำหนดเองและเวลาเดลต้า

อาร์กิวเมนต์สุดท้าย ( function ) คือฟังก์ชันที่กําหนดเองที่จะเรียกฟังก์ชันนี้จะถูกส่งพารามิเตอร์หนึ่งชื่อว่า deltaTime ซึ่งแสดงจำนวนเวลาที่ผ่านไประหว่างจุดเริ่มต้นของขั้นตอนเรนเดอร์ก่อนหน้าและจุดเริ่มต้นของขั้นตอนเรนเดอร์ปัจจุบัน

การอัปเดตการเรนเดอร์ทั้งหมดจะรอจนกว่ารหัสในขั้นตอนการเรนเดอร์จะเสร็จสิ้นตรวจสอบให้แน่ใจว่าโค้ดใดๆ ที่เรียกโดย BindToRenderStep() ทำงานได้อย่างรวดเร็วและมีประสิทธิภาพ; หากโค้ดใช้เวลานานเกินไป ภาพประสบการณ์จะขรุขระ

พารามิเตอร์

name: string

ฉลากสำหรับการผูกที่สามารถใช้กับ Unbind หากการผูกไม่จำเป็นอีกต่อไป

ค่าเริ่มต้น: ""
priority: number

ลําดับความสําคัญของการผูกในฐานะตัวเลข มันกําหนดเมื่อใดระหว่างขั้นตอนการแสดงผลที่จะเรียกฟังก์ชันกําหนดเองยิ่งตัวเลขนี้ต่ำเท่าไร ก็จะเรียกฟังก์ชันกำหนดเองได้เร็วขึ้นเท่านั้นหากมีการผูกสองค่าเดียวกันมีลําดับความสําคัญเดียวกัน เครื่อง Roblox จะสุ่มเลือกหนึ่งรายการเพื่อทํางานก่อน

ค่าเริ่มต้น: ""
function: function

ฟังก์ชันที่กําหนดเองถูกผูก

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

This code sample moves a GuiObject in a circle within its parent object using RunService's BindToRenderStep. It defines a parametric equation in a function to help with positioning the GuiObject.

To try this code out, put a ScreenGui in the StarterGui. Inside the ScreenGui, insert a Frame with a LocalScript. Paste this code into the LocalScript, then play the game. Watch the Frame travel counterclockwise within.

Frame Moving in Circle

local RunService = game:GetService("RunService")
-- How fast the frame ought to move
local SPEED = 2
local frame = script.Parent
frame.AnchorPoint = Vector2.new(0.5, 0.5)
-- A simple parametric equation of a circle
-- centered at (0.5, 0.5) with radius (0.5)
local function circle(t)
return 0.5 + math.cos(t) * 0.5, 0.5 + math.sin(t) * 0.5
end
-- Keep track of the current time
local currentTime = 0
local function onRenderStep(deltaTime)
-- Update the current time
currentTime = currentTime + deltaTime * SPEED
-- ...and the frame's position
local x, y = circle(currentTime)
frame.Position = UDim2.new(x, 0, y, 0)
end
-- This is just a visual effect, so use the "Last" priority
RunService:BindToRenderStep("FrameCircle", Enum.RenderPriority.Last.Value, onRenderStep)
--RunService.RenderStepped:Connect(onRenderStep) -- Also works, but not recommended

This example shows how to bind a simple function to the render step. All this function does is print how much time passed between the last render step and the current one. Note that this code will need to be in a LocalScript to run.

RunService Custom Function

local RunService = game:GetService("RunService")
local function checkDelta(deltaTime)
print("Time since last render step:", deltaTime)
end
RunService:BindToRenderStep("Check delta", Enum.RenderPriority.First.Value, checkDelta)

This example uses the RunService to bind and unbind a function named printHello. First, we bind the function to the RenderStep so that fires every step. Then, after we wait 5 seconds (wait(5)), we unbind the function.

Bind and Unbind a Function

local RunService = game:GetService("RunService")
-- Step 1: Declare the function and a name
local NAME = "Print Hello"
local function printHello()
print("Hello")
end
-- Step 2: Bind the function
RunService:BindToRenderStep(NAME, Enum.RenderPriority.First.Value, printHello)
-- Step 3: Unbind the function
RunService:UnbindFromRenderStep(NAME)

IsClient

เขียนพร้อมๆ กัน

หากรหัสที่เรียกวิธีนี้ทำงานในบริบทของไคลเอนต์ (ใน , ใน ที่จำเป็นต้องใช้โดย หรือใน ที่ตั้งไว้เป็น ) วิธีนี้จะคืน ในกรณีอื่น ๆ ทั้งหมดวิธีนี้จะคืน false

หากวิธีนี้ส่งคืน true แล้วสภาพแวดล้อมปัจจุบันสามารถเข้าถึงคุณลักษณะเฉพาะของไคลเอนต์เช่น RunService.PreRender หรือ Players.LocalPlayer ได้


ส่งค่ากลับ

ว่าสภาพแวดล้อมปัจจุบันกำลังดำเนินการเรียกลูกค้าหรือไม่

IsEdit

การรักษาความปลอดภัยของปลั๊กอิน
เขียนพร้อมๆ กัน

วิธีนี้จะคืนว่าสภาพแวดล้อมปัจจุบันอยู่ในโหมด "แก้ไข" หรือไม่ เช่นใน Studio เมื่อประสบการณ์ไม่ได้ทำงาน

IsEdit() จะส่งคืนสิ่งที่ตรงกันข้ามของ IsRunning() ยกเว้นเมื่อการจำลองถูกหยุดชั่วคราวแล้วทั้งสองวิธีจะส่งคืน false


ส่งค่ากลับ

ว่าสภาพแวดล้อมปัจจุบันอยู่ในโหมด "แก้ไข" หรือไม่

IsRunMode

เขียนพร้อมๆ กัน

วิธีนี้จะคืนว่าปุ่ม เรียกใช้ ถูกกดเพื่อดําเนินการจําลองใน Studio หรือไม่มันจะยังคงส่งกลับ true หากการจำลองถูกหยุดโดยใช้ปุ่ม หยุด แต่เมื่อหยุดโดยใช้ปุ่ม หยุด แล้ว มันจะกลับไปส่งกลับ false

โปรดทราบว่า Studio จะเข้าสู่โหมด "เรียกใช้" เมื่อกดปุ่ม เรียกใช้ ไม่ใช่ปุ่ม เล่น โปรดทราบว่าวิธีนี้จะส่งคืน false หากการจำลองเริ่มต้นโดยใช้ RunService:Run() แทนที่จะใช้ปุ่ม เรียก


ส่งค่ากลับ

ว่าปุ่ม เรียกใช้ ถูกกดเพื่อเรียกใช้การจำลองใน Studio

IsRunning

ส่งคืนว่าประสบการณ์กําลังดําเนินอยู่หรือไม่โดยหมายถึงการจําลองได้รับการดําเนินการโดยใช้ปุ่ม เรียก หรือ เล่น IsRunning() จะกลับสิ่งที่ตรงกันข้ามของ IsEdit() เสมอ ยกเว้นเมื่อการจำลองถูกหยุดชั่วคราวแล้วทั้งสองวิธีจะกลับ false


ส่งค่ากลับ

ว่าประสบการณ์กำลังดำเนินอยู่หรือไม่

IsServer

เขียนพร้อมๆ กัน

วิธีนี้จะคืนว่าสภาพแวดล้อมปัจจุบันกำลังทำงานบนเซิร์ฟเวอร์หรือไม่หากรหัสที่เรียกวิธีนี้ทำงานในบริบทเซิร์ฟเวอร์ (ใน Script กับ RunContext ตั้งค่าเป็น Enum.RunContext.Server หรือ Enum.RunContext.Legacy หรือใน ModuleScript ที่จำเป็นโดย Script ) วิธีนี้จะคืน trueในกรณีอื่น ๆ ทั้งหมดวิธีนี้จะคืน false

หากฟังก์ชันนี้ส่งคืนค่าเป็นจริงแล้วสภาพแวดล้อมปัจจุบันสามารถเข้าถึงคุณลักษณะเฉพาะของเซิร์ฟเวอร์เช่น ServerStorage หรือ ServerScriptService ได้


ส่งค่ากลับ

ว่าสภาพแวดล้อมปัจจุบันกำลังทำงานบนเซิร์ฟเวอร์หรือไม่

IsStudio

เขียนพร้อมๆ กัน

วิธีนี้จะคืนว่าสภาพแวดล้อมปัจจุบันกำลังทำงานใน Studio หรือไม่ สามารถใช้เพื่อห่อโค้ดที่ควรจะดำเนินการเฉพาะเมื่อทดสอบใน Studio


ส่งค่ากลับ

ว่าสภาพแวดล้อมปัจจุบันกำลังทำงานใน Studio หรือไม่

Pause

()
การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้หยุดการจำลองประสบการณ์หากกําลังดําเนินการ ระงับฟิสิกส์และสคริปต์การจำลองสามารถเริ่มต้นโดยใช้ Run() หรือปุ่ม เรียกใช้ ใน Studio; เมื่อการจำลองถูกหยุดชั่วคราว IsRunning() จะกลับมาเป็น false


ส่งค่ากลับ

()

Run

()
การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้ทำการจำลองประสบการณ์ (ฟิสิกส์และสคริปต์)เมื่อการจำลองกำลังดำเนินอยู่ IsRunning() จะส่งคืน trueอย่างไรก็ตาม IsRunMode() จะส่งคืน true เฉพาะถ้าการจำลองถูกเริ่มโดยใช้ปุ่ม เรียก ใน Studio


ส่งค่ากลับ

()

Stop

()
การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้หยุดการจำลองประสบการณ์หากกำลังดำเนินการเมื่อการจำลองถูกหยุด IsRunning() จะกลับ false และ IsEdit() จะกลับ true

ในทางตรงกันข้ามกับปุ่ม หยุด ใน Studio การเรียกใช้วิธีนี้จะไม่ฟื้นฟูประสบการณ์กลับสู่สถานะที่มันอยู่ก่อนที่จะดำเนินการจำลองซึ่งหมายความว่าการเปลี่ยนแปลงใดๆ ที่ทำต่อประสบการณ์โดยการจำลองฟิสิกส์และสคริปต์จะยังคงอยู่หลังจากการจำลองสิ้นสุดแล้ว


ส่งค่ากลับ

()

UnbindFromRenderStep

()

ให้ชื่อฟังก์ชันที่ส่งไปที่ BindToRenderStep() เมтоดนี้จะยกเลิกการเรียกฟังก์ชันในระหว่าง PreRenderใช้เพื่อยกเลิกฟังก์ชันที่ผูกไว้เมื่อไม่จำเป็นอีกต่อไปหรือเมื่อไม่จำเป็นต้องยิงทุกขั้นตอนอีกต่อไป

หากไม่มีฟังก์ชันที่ผูกโดยชื่อที่กำหนด วิธีนี้จะไม่ดำเนินการและดำเนินต่อโดยไม่เกิดข้อผิดพลาด

พารามิเตอร์

name: string

ชื่อฟังก์ชันที่ถูกปลดการผูก

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

อีเวนต์

Heartbeat

อีเวนต์ Heartbeat จะเกิดขึ้นทุกเฟรมหลังจากการจำลองฟิสิกส์สําเร็จอาร์กิวเมนต์ deltaTime ระบุเวลาที่ผ่านไปนับตั้งแต่กรอบก่อนหน้า

อีเวนต์นี้เกิดขึ้นเมื่อส่วนใหญ่ของสคริปต์ทำงานมันเกิดขึ้นในตอนท้ายของแต่ละเฟรมและยังเป็นเมื่อมีการดำเนินการสคริปต์ใดๆ ที่รออยู่ เช่น สคริปต์ที่กำหนดการไว้ด้วยไลบรารี Library.task``Heartbeat มักใช้สำหรับงานประจำ เช่น การอัปเดตระบบเกมหลักเช่นการฟื้นฟูสุขภาพ

หลังจากขั้นตอนนี้ เครื่องยนต์จะส่งการอัปเดตคุณสมบัติและเหตุการณ์ไปยังเซิร์ฟเวอร์หรือไคลเอนต์ซึ่งจะได้รับในภายหลังเป็นส่วนหนึ่งของขั้นตอนการรับ การสําเนา

พารามิเตอร์

deltaTime: number

เวลา (ในวินาที) ที่ผ่านไปนับตั้งแต่กรอบก่อนหน้า


PostSimulation

อีเวนต์ PostSimulation จะเกิดขึ้นทุกเฟรมหลังจากการจำลองฟิสิกส์สําเร็จอาร์กิวเมนต์ deltaTimeSim บ่งบอกถึงเวลาที่กรอบปัจจุบันได้ก้าวข้ามการจำลองฟิสิกส์โดยไม่คำนึงถึงการจำกัดฟิสิกส์

อีเวนต์นี้มีประโยชน์สำหรับการทำการปรับเปลี่ยนครั้งสุดท้ายต่อผลลัพธ์ของการจำลอง หลังจากช่วงนี้เครื่องยนต์จะเรียกการเหตุการณ์ Heartbeat

พารามิเตอร์

deltaTimeSim: number

เวลา (ในวินาที) ที่กรอบปัจจุบันได้ก้าวข้ามการจำลองฟิสิกส์ โดยไม่นับรวมการหดตัวของฟิสิกส์


PreAnimation

อีเวนต์ PreAnimation จะเกิดขึ้นในทุกเฟรมก่อนการจำลองฟิสิกส์ แต่หลังจากการเรนเดอร์อาร์กิวเมนต์ deltaTimeSim บ่งบอกถึงเวลาที่กรอบปัจจุบันมีแอนิเมชั่นก้าว

อีเวนต์นี้มีประโยชน์สำหรับการแก้ไขวัตถุแอนิเมชัน เช่น ปรับความเร็วหรือลําดับความสําคัญของพวกเขาเมื่ออีเวนต์ PreAnimation สําเร็จแล้ว เครื่องยนต์จะดําเนินการเรียกใช้แอนิเมชันเหล่านี้ ปรับปรุงการเปลี่ยนแปลงร่วมซึ่งจะถูกใช้ในภายหลังเพื่ออัปเดตวัตถุในระหว่างการจําลองทางฟิสิกส์

หลังจากภาพเคลื่อนไหวถูกกระโดดแล้ว เครื่องยนต์จะเรียกการเหตุการณ์ PreSimulation

พารามิเตอร์

deltaTimeSim: number

เวลา (ในวินาที) ที่กรอบปัจจุบันมีแอนิเมชั่นก้าว


PreRender

อีเวนต์ PreRender (การแทนที่สําหรับ RenderStepped ) จะเกิดขึ้นในทุกเฟรมก่อนที่จะแสดงเฟรมอาร์กิวเมนต์ deltaTimeRender ระบุเวลาที่ผ่านไปนับตั้งแต่กรอบก่อนหน้า

อีเวนต์นี้ช่วยให้คุณสามารถรันโค้ดและอัปเดตโลกก่อนที่จะวาดบนหน้าจอของผู้เล่นสิ่งนี้มีประโยชน์สำหรับการปรับเปลี่ยนในนาทีสุดท้ายเช่นการเปลี่ยนตำแหน่งวัตถุการอัปเดตแอนิเมชั่นหรือเตรียมเอฟเฟกต์ภาพ แต่ควรใช้อย่างประหยัดเนื่องจากเครื่องยนต์ไม่สามารถเริ่มแสดงเฟรมได้จนกว่าการรันโค้ดในอีเวนต์นี้จะเสร็จสิ้น

เนื่องจาก PreRender เป็นด้านไคลเอนต์ จึงสามารถใช้ได้เฉพาะใน LocalScript , ใน ModuleScript ที่จำเป็นต้องใช้โดย LocalScript หรือใน Script ที่ตั้งค่า RunContext เป็น Enum.RunContext.Client

หลังจากขั้นตอน PreRender เฟส การจำลองเริ่มต้นด้วยเหตุการณ์ PreAnimation

พารามิเตอร์

deltaTimeRender: number

เวลา (ในวินาที) ที่ผ่านไปนับตั้งแต่กรอบก่อนหน้า


PreSimulation

อีเวนต์ PreSimulation (การแทนที่สําหรับ Stepped ) จะเกิดขึ้นในทุกเฟรมก่อนการจําลองทางกายภาพอาร์กิวเมนต์ deltaTimeSim บ่งบอกถึงเวลาที่กรอบปัจจุบันจะเริ่มการจำลองทางกายภาพโดยไม่คำนึงถึงการลดอัตราการจำลองทางกายภาพ

อีเวนต์นี้มีประโยชน์สำหรับการปรับคุณสมบัติเช่นความเร็วหรือแรงก่อนที่จะนำไปใช้เป็นส่วนหนึ่งของการจำลองการจำลองจะทำงานต่อไป อาจหลายครั้ง เนื่องจากตัวแก้ปัญหาด้านฟิสิกส์ทำงานที่ความถี่สูงกว่าระบบเครื่องยนต์อื่น ๆเมื่อสิ่งนี้สําเร็จแล้ว การเหตุการณ์ PostSimulation จะถูกยิง

พารามิเตอร์

deltaTimeSim: number

เวลา (ในวินาที) ที่กรอบปัจจุบันจะเดินหน้าการจำลองฟิสิกส์ โดยไม่นับการหดตัวของฟิสิกส์


RenderStepped

เผาไหม้ทุกเฟรมก่อนที่จะเรนเดอร์เฟรม

หมายเหตุการย้าย

อีเวนต์นี้ถูกแทนที่โดย PreRender ซึ่งควรใช้สำหรับงานใหม่

พารามิเตอร์

deltaTime: number

เวลา (ในวินาที) ที่ผ่านไปนับตั้งแต่กรอบก่อนหน้า


Stepped

เผาไหม้ทุกเฟรมก่อนที่จะทำการจำลองฟิสิกส์

หมายเหตุการย้าย

อีเวนต์นี้ถูกแทนที่โดย PreSimulation ซึ่งควรใช้สำหรับงานใหม่

พารามิเตอร์

time: number

ระยะเวลา (ในวินาที)ที่ RunService ได้ทำงานมาแล้ว

deltaTime: number

เวลา (ในวินาที) ที่ผ่านไปนับตั้งแต่กรอบก่อนหน้า