RunService
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
RunService มีวิธีและเหตุการณ์สำหรับการ
RunService Roblox
ผลการทดสอบบริบท
<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>
สรุป
คุณสมบัติ
วิธีการ
ให้ชื่อสตริงของฟังก์ชันและความสามารถในการกำหนดความสำคัญนี้วิธีนี้ผูกฟังก์ชันไว้ที่ RunService.PreRender
กลับว่าสภาพแวดล้อมปัจจุบันกำลังดำเนินการบนเครื่องคอมพิวเตอร์หรือไม่
กลับว่าสภาพแวดล้อมปัจจุบันอยู่ในโหมด Edit
กลับว่าปุ่ม วิ่ง ได้ถูกกดเพื่อให้ประมาณการใน Studio หรือไม่
กลับว่าประสบการณ์กำลังดำเนินการหรือไม่
กลับว่าสภาพแวดล้อมปัจจุบันกำลังดำเนินการบนเซิร์ฟเวอร์หรือไม่
กลับว่าสภาพแวดล้อมปัจจุบันกำลังทำงานใน Studio หรือไม่
หยุดการจำลองการเปลี่ยนแปลงประสบการณ์หากมันกำลังดำเนินการ การรอดชีวิตและสคริปต์
ดำเนินการจำลองเกม ดำเนินการฟิสิกส์และสคริปต์
หยุดการจำลองการใช้งานของประสบการณ์หากมันกำลังดำเนินการ
ยกเลิกการผูกฟังก์ชันที่เกี่ยวข้องกับวงจรการเรนเดอร์โดยใช้ RunService:BindToRenderStep()
อีเวนต์
ยิงทุกเฟรม หลังจากที่จำลองการเคลื่อนที่ได้รับการยอมรับ
ยิงทุกเฟรม หลังจากที่จำลองการเคลื่อนที่ได้รับการยอมรับ
ยิงทุกเฟรม ก่อนการจำลองฟิสิกส์ แต่หลังจากนั้น
ยิงทุกเฟรม ก่อนที่จะเรนเดอร์เฟรม
ยิงทุกเฟรม ก่อนการจำลองฟิสิกส์
ยิงทุกเฟรม ก่อนที่จะเรนเดอร์เฟรม
ยิงทุกเฟรม ก่อนการจำลองฟิสิกส์
คุณสมบัติ
ClientGitHash
RunState
วิธีการ
BindToRenderStep
การใช้งาน BindToRenderStep() รวมคุณสมบัติตัวอักษรที่กำหนดเวลาในขั้นตอนการเรนเดอร์ มีสามตัวอาร์กุลตัวอักษรหลัก: name , priority และสิ่งที่ 1> function1> จะโทร
เนื่องจากมันเกี่ยวข้องกับกระบวนการเรนเดอร์ของลูกค้า, BindToRenderStep() สามารถเรียกได้เฉพาะลูกค้าเท่านั้น
ชื่อ
ตัวประกาศ name เป็นป้ายชื่อสำหรับการผูก และสามารถใช้กับ RunService:UnbindFromRenderStep() หากการผูกไม่ได้รับการต้องการแล้ว
local RunService = game:GetService("RunService")
local function functionToBind() end
-- ผูกคุณสมบัติด้านบนให้กับการผูกที่มีชื่อว่า "tempBinding"
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- ยกเลิกการผูกติดตั้งฟังก์ชัน "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
ความสามารถ
ค่า priority ของการผูกคือตัวเลข; มันกำหนดเมื่อใดที่ในขั้นตอนการเรนเดอร์ที่จะเรียกคุณสมบัติที่กำหนด ยิ่งตัวเลขนี้ต่ำเท่าไหร่คุณสมบัติจะยิ่งเร็ว หากค่าค
- การป้อนข้อมูลของผู้เล่น: 100
- การควบคุมกล้อง: 200 สำหรับความสะดวก; คลาส Enum.RenderPriority อัปเดตโดยเฉพาะอย่างยิ่งเพื่อให้เป็นไปตามการปรั
เมื่อใช้ Enum.RenderPriority จำไว้ว่าจะใช้ .Value ในตอนท้ายของเนื้อหาที่ต้องการ RunService:BindToRenderStep() เป็นเจ้าของ
local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- รหัสที่นี่จะทำงานก่อนสคริปต์กล้อง Roblox เริ่มต้น
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
คุณสมบัติฟังก์ชันและเวลาดีลตา
อาร์กุมุนต์สุดท้าย ( function ) เป็นอาร์กุมุนต์ที่กำหนดเองเพื่อเรียก ฟังก์ชันนี้จะผ่านปารามิเตอร์หนึ่งที่เรียกว่า deltaTime ซึ่งแสดงว่าเวลาที่ผ่านระหว่างต้นของกระบวนการเ
การอัปเดตการเรนเดอร์ทั้งหมดจะรอจนกว่ารหัสในขั้นตอนเรนเดอร์จะเสร็จสิ้น ให้แน่ใจว่ารหัสที่เรียกโดย BindToRenderStep() จะดำเนินการอย่างรวดเร็วและมีประสิทธิภาพ; หากรหัสใช้เวลานานเกินไป,
พารามิเตอร์
ความสามารถในการกำหนดค่าความสามารถเป็นตัวเลข มันจะกำหนดเมื่อใดที่ในขั้นตอนการเรนเดอร์ที่จะเรียกคุณสมบัติที่กำหนดเอง หากค่าความสามารถนี้มีความสามารถเดียวกันคุณสมบัตินี้จะถูกเลื
กำลังเรียกใช้งานฟังก์ชันที่กำหนดเอง
ส่งค่ากลับ
ตัวอย่างโค้ด
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
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)
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
หากโค้ดที่เรียกวิธีนี้ดำเนินการในบริบทของลูกค้า (ใน LocalScript ที่ต้อ
หากวิธีนี้กลับมา true ให้สภาพแวดล้อมปัจจุบันสามารถเข้าถึงคุณสมบัติเฉพาะของลูกค้าเช่น RunService.PreRender หรือ Players.LocalPlayer ได้
ส่งค่ากลับ
ว่าสภาพแวดล้อมปัจจุบันกำลังรันตัวลูกค้าหรือไม่
IsEdit
วิธีนี้กลับมาที่เป็น "เปลี่ยนแปลง" หากสภาพแวดล้อมปัจจุบันอยู่ในโหมด "เปลี่ยนแปลง" เช่นใน Studio เมื่อประสบการณ์ไม่ได้ทำงาน
IsEdit() จะกลับค่าการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับการกลับก
ส่งค่ากลับ
ว่าสภาพแวดล้อมปัจจุบันอยู่ในโหมด "แก้ไข"
IsRunMode
วิธีนี้จะกลับมาที่ วิธีการประเมินผล หากปุ่ม true ถูกกดเพื่อดำเนินการจำลองใน Studio จะได้รับการกลับมาเป็น true หมายเหตุว่า Studio เข้าสู่โหมด "วิ่ง" เมื่อปุ่ม วิ่ง ถูกกดไม่ใช่ปุ่ม เล่น โปรดทราบว่าวิธีนี้จะกลับมาเป็น false หากเริ่มซิมูเลชันโด
ส่งค่ากลับ
ว่าปุ่ม วิ่ง ได้ถูกกดเพื่อดำเนินการจำลองใน Studio
IsRunning
กลับว่าประสบการณ์กำลังดำเนินการหรือไม่ ซึ่งหมายความว่าการจำลองได้ถูกดำเนินการโดยใช้ปุ่ม วิ่ง หรือ เล่น IsRunning() จะส่งผลลัพธ์ที่น้องๆ ของ IsEdit() เสมอ ยกเว้นเมื่อการจำลองถูกหยุดชั่วคราวในขณะที่ทั้งสองวิธีจะส่งผลลัพธ์ false
ส่งค่ากลับ
ว่าประสบการณ์กำลังดำเนินการอยู่หรือไม่
IsServer
วิธีนี้กำหนดว่าสภาพแวดล้อมปัจจุบันกำลังดำเนินการบนเซิ
หากคุณสมบัตินี้กลับมาเป็นความจริง สิ่งแวดล้อมปัจจุบันของคุณสามารถเข้าถึงคุณสมบัติเฉพาะของเซิร์ฟเวอร์เช่น ServerStorage หรือ ServerScriptService ได้
ส่งค่ากลับ
ว่าสภาพแวดล้อมปัจจุบันกำลังดำเนินการบนเซิร์ฟเวอร์หรือไม่
IsStudio
วิธีนี้กำหนดว่าสภาพแวดล้อมปัจจุบันที่เรียกใช้ใน Studio หรือไม่ สามารถใช้เพื่อหุ้มโค้ดที่ควรจะเรียกใช้เฉพาะเมื่อทดสอบใน Studio
ส่งค่ากลับ
ว่าสภาพแวดล้อมปัจจุบันกำลังดำเนินการใน Studio หรือไม่
Pause
วิธีนี้ระงับการจำลองการใช้งานของประสบการณ์หากมันกำลังดำเนินการ การรอดูดพลังงานและสคริปต์ การจำลองสามารถเริ่มได้โดยใช้ Class.RunService:Run()|
ส่งค่ากลับ
Run
วิธีนี้จะดําเนินการจําลองประสบการณ์ (ฟิสิกส์และสคริปต์) ของประสบการณ์ เมื่อวิธีนี้ดําเนินการได้ Class.RunService:Isrunning()|
ส่งค่ากลับ
Stop
วิธีนี้หยุดการจำลองการใช้งานของประสบการณ์หากมันกำลังดำเนินการ เมื่อการจำลองถูกหยุดจะกลับมาที่ IsRunning() และ false จะกลั
ในขณะที่ปุ่ม หยุด ใน Studio จะไม่สามารถกู้คืนประสบการณ์ไปยังสถานะที่มันอยู่ในก่อนหน้าการดำเนินการ หมายถึงการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นในประสบการณ์โดยการจำลองภาพเคลื่อนไ
ส่งค่ากลับ
UnbindFromRenderStep
ให้ชื่อของฟังก์ชันที่ส่งไปยัง BindToRenderStep() วิธีนี้จะปลดบังฟังก์ชันจากการเรียกในระหว่าง PreRender หรือเมื่อพวกเขาไม่ต้องการเ
หากไม่มีคุณสมบัติตามชื่อที่กำหนด วิธีนี้จะไม่ดำเนินการและดำเนินต่อไปโดยไม่มีข้อผิดพลาด
พารามิเตอร์
ชื่อของฟังก์ชันที่ไม่ได้ผูก
ส่งค่ากลับ
อีเวนต์
Heartbeat
กิจกรรม Heartbeat จะเริ่มตั้งแต่ทุกเฟรมหลังจากที่การจำลองฟิสิกส์เสร็จสิ้น อาร์กิวมต์ deltaTime ระบุเวลาที่ผ่านมาตั้งแต่เฟรมก่อนหน้า
เหตุการณ์นี้เกิดขึ้นเมื่อส่วนใหญ่ของสคริปต์ทำงาน มันเกิดขึ้นในตอนท้ายของแต่ละเฟรมและยังเป็นเมื่อใด ๆ ของสคริปต์ที่รอกำลังดำเนินการ เช่น การปรับปรุงระ
หลังจากนี้เครื่องส่งการปรับปรุงสถานะและกิจกรรมของเครื่องให้กับเซิร์ฟเวอร์หรือลูกค้าที่จะได้รับในภายหลังเป็นส่วนหนึ่งของกระบวนการรับ การเลียนแบบ รับขั้นตอน
พารามิเตอร์
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า
PostSimulation
กิจกรรม PostSimulation จะเริ่มตั้งแต่ทุกเฟรมหลังจากที่การจำลองฟิสิกส์เสร็จสิ้น อาร์กิวมต์ deltaTimeSim ชี้ให้เห็นถึงเวลาที่ผ่านมาตั้งแต่เฟรมก่อนหน้า
กิจกรรมนี้มีประโยชน์สำหรับการปรับแต่งการจัดการล่าสุดในผลลัพธ์ของการจำลอง หลังจากสิ้นสุดระยะนี้ เครื่องยนต์จะเริ่มต้นอีเวนต์ Heartbeat
พารามิเตอร์
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า
PreAnimation
กิจกรรม PreAnimation จะเปิดทุกเฟรม ก่อนการจำลองฟิสิกส์ แต่หลังจากการจำลอง สารบัญ deltaTimeSim ระบุเวลาที่ผ่านมาตั้งแต่เฟรมก่อนหน้า
เหตุการณ์นี้มีประโยชน์สำหรับการปรับแต่งวัตถุอนิเมชัน เช่นการปรับความเร็วหรือความสำคัญของพวกเขา เมื่อเหตุการณ์ PreAnimation สิ้นสุดลง เครื่องจะดำเนินการปรับแต่งวิดีโอเหล่
หลังจากที่อนิเมชันถูกเรียกตัวเครื่องจะเรียกเหตุการณ์ PreSimulation
พารามิเตอร์
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า
PreRender
กิจกรรม PreRender (เทียบเท่ากับ RenderStepped ) จะปรากฏขึ้นทุกเฟรม ก่อนที่เฟรมนั้นจะถูกเรนเดอร์ สารบัญ deltaTimeRender ระบุเวลาที่ผ่านมาตั้งแต่เฟรมก่อน
เหตุการณ์นี้ช่วยให้คุณสามารถดำเนินการโค้ดและปรับปรุงโลกก่อนที่จะวาดบนหน้าจอของผู้เล่น นี่เป็นประโยชน์สำหรับการปรับแต่งตำแหน่งวัตถุ การปรับปรุงอนิเมชัน หรือก
เนื่องจาก PreRender เป็นด้านล่าง, มันสามารถใช้ใน LocalScript ที่ต้องการโดย ModuleScript หรือใน
หลังจากสิ้นสุดสเตจ PreRender เริ่มต้นสเตจ PreAnimation ด้วยอีเวนต์
พารามิเตอร์
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า
PreSimulation
กิจกรรม PreSimulation (เทียบเท่ากับ Stepped ) จะปรากฏขึ้นทุกเฟรม ก่อนการจำลองฟิสิกส์ สารบัญ deltaTimeSim ระบุเวลาที่ผ่านมาตั้งแต่เฟรมก่อนหน้า
เหตุการณ์นี้มีประโยชน์สำหรับการปรับค่าสมบัติเช่นความเร็วหรือแรงเพียงก่อนที่จะถูกประยุกต์ในระหว่างการจำลอง การจำลองจะดำเนินการต่อจากนั้นจะปล่อยให้เหตุก
พารามิเตอร์
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า
RenderStepped
กิจกรรม RenderStepped (เทียบเท่ากับ PreRender ) จะปรากฏขึ้นทุกเฟรม ก่อนที่เฟรมจะแสดง สัญลักษณ์ deltaTime ระบุเวลาที่ผ่านมาตั้งแต่เฟรมก่อนหน้า
เหตุการณ์นี้ช่วยให้คุณสามารถดำเนินการโค้ดและปรับปรุงโลกก่อนที่จะวาดบนหน้าจอของผู้เล่น นี่เป็นประโยชน์สำหรับการปรับแต่งตำแหน่งวัตถุ การปรับปรุงอนิเมชัน หรือก
เนื่องจาก RenderStepped เป็นด้านล่าง, มันสามารถใช้ใน LocalScript ที่ต้องการโดย ModuleScript หรือใน <
หลังจากสิ้นสุดสเต็ปเฟส RenderStepped เฟสซิมูลเรชันเริ่มต้นด้วยกิจกรรม PreAnimation
พารามิเตอร์
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า
Stepped
กิจกรรม Stepped (เทียบเท่ากับ PreSimulation ) จะปรากฏทุกเฟรม ก่อนที่จะเริ่มการจำลองฟิสิกส์ สัญลักษณ์ deltaTime ระบุเวลาที่ผ่านมาตั้งแต่เฟรมก่อนหน้า
เหตุการณ์นี้มีประโยชน์สำหรับการปรับค่าสมบัติเช่นความเร็วหรือแรงเพียงก่อนที่จะถูกประยุกต์ในระหว่างการจำลอง การจำลองจะดำเนินการต่อจากนั้นจะปล่อยให้เหตุก
พารามิเตอร์
ระยะเวลา (ในวินาที) ที่ RunService ได้ทำงานมา
เวลา (ในวินาที) ที่ผ่านมาจากเฟรมก่อนหน้า