Workspace
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
งานหลักของ Workspace คือการจัดเก็บวัตถุที่มีอยู่ในโลก 3D อย่างมีประสิทธิภาพ BaseParts และ Attachmentsในขณะที่วัตถุดังกล่าวเป็นลูกหลานของ Workspace พวกเขาจะเป็นที่ใช้งานสำหรับ BaseParts นี่หมายความว่าพวกเขาจะถูกแสดงและโต้ตอบทางกายภาพกับส่วนอื่นๆ และโลกสำหรับ Attachments , นี่หมายความว่าวัตถุที่ตกแต่งให้พวกเขา เช่น ParticleEmitters , Beams และ BillboardGuis จะแสดงผล
การเข้าใจพฤติกรรมนี้เป็นสิ่งสำคัญเนื่องจากหมายความว่าวัตถุสามารถถูกลบออกจาก Workspace เมื่อไม่จำเป็นตัวอย่างเช่น แผนที่ Models สามารถถูกลบออกเมื่อแผนที่อื่นถูกเล่นบนวัตถุที่ไม่จำเป็นในโลก 3D ทันทีมักจะถูกเก็บไว้ใน ReplicatedStorage หรือ ServerStorage
ในบทบาทของผู้ถือวัตถุ 3D ที่ใช้งานอยู่ Workspace รวมถึงจำนวนฟังก์ชันที่มีประโยชน์ที่เกี่ยวข้องกับชิ้นส่วนตำแหน่งและข้อต่อระหว่างพวกเขา
การเข้าถึงพื้นที่ทำงาน
Workspace สามารถเข้าถึงได้หลายวิธีทั้งหมดซึ่งถูกต้อง
- workspace
- game:GetService("Workspace")
- game.Workspace
บันทึก
- วัตถุที่ต้องการการตกแต่ง เช่น ParticleEmitters และ BillboardGuis จะอยู่ในตำแหน่ง
(0, 0, 0) เมื่อถูกถ่ายโอนไปยัง Workspace โดยไม่มีการตกแต่งอื่น ๆ ตั้งค่า - วิธี Model:MakeJoints() และ Model:BreakJoints() ที่มีการมรดกจากคลาส Model ถูกแทนที่โดย Workspace:MakeJoints() และ Workspace:BreakJoints() ซึ่งสามารถใช้ได้เฉพาะในปลั๊กอิน
- ไม่สามารถลบ Workspace ได้
- วัตถุปัจจุบันของไคลเอนต์สามารถเข้าถึงได้โดยใช้คุณสมบัติ Camera ของ Workspace.CurrentCamera
- วัตถุ Terrain สามารถเข้าถึงได้โดยใช้คุณสมบัติ Workspace.Terrain
สรุป
คุณสมบัติ
ความหนาแน่นของอากาศในระดับพื้นดินที่ใช้ในรูปแบบแรงอากาศ
กำหนดว่าสินทรัพย์ที่สร้างโดยผู้ใช้รายอื่นสามารถขายได้ในเกมหรือไม่
กำหนดโหมดการจำกัดอัตราการเร่งแอนิเมชั่นสำหรับไคลเอนต์ท้องถิ่น
วัตถุ Camera ที่ใช้โดยผู้เล่นท้องถิ่น
จํานวนเวลาในวินาทีที่เกมทํางานอยู่
กำหนดความสูงที่ตก BaseParts และบรรพบุรุษของพวกเขา Models ถูกลบออกจาก Workspace
กำหนดว่าเครื่องกลศาสตร์คำนวณแรงอากาศได้หรือไม่บน BaseParts ที่มีคุณสมบัติ EnableFluidForces เป็นจริง
ระบุเวกเตอร์ลมระดับโลกสำหรับหญ้าพื้นที่เคลื่อนไหว เมฆไดนามิก และอนุภาค
กำหนดการเร่งความเร็วเนื่องจากแรงโน้มถ่วงที่ใช้กับการลดลง BaseParts
เปิดใช้งานการสนับสนุนข้อจํากัดสําหรับ IKControls หากปิดใช้งาน IKControls จะเพิกเฉยข้อจํากัดทางกายภาพ
ตั้งค่าว่าหัวและอุปกรณ์เสริมของตัวละครควรดาวน์โหลดเป็นชิ้นส่วนเมชจะได้หรือไม่
ควบคุมโลจิสติกที่ใช้เพื่อเลือกส่วนรากของการประกอบเมื่อใช้ข้อจํากัดเคลื่อนที่ใดๆ
กำหนดวิธีที่ตัวแก้ปัญหาจะเร่งการจำลองทางฟิสิกส์ไปข้างหน้าในเวลา
กำหนดค่าเมื่อเครื่องยนต์เริ่มต้นการจัดการเหตุการณ์อีกครั้ง
กำหนดวิธีที่เครื่องยนต์ตัดสินใจเมื่อจะสตรีมเนื้อหาออกจากผู้เล่น
ว่าการสตรีมเนื้อหาจะเปิดใช้งานสำหรับสถานที่หรือไม่
กำหนดว่า StreamingIntegrityMode จะใช้งานอยู่หรือไม่
ระยะขั้นต่ำที่เนื้อหาจะถูกสตรีมไปยังผู้เล่นที่มีความสําคัญสูง
ระยะสูงสุดที่เนื้อหาจะถูกสตรีมไปยังผู้เล่น
กำหนดว่า parts ในกลุ่มที่แตกต่างกันที่ตั้งไว้เพื่อไม่ให้ชนกันจะเพิกเฉยการชนกันและการสัมผัสเหตุการณ์
ตั้งระดับรายละเอียดบนโมเดลสำหรับประสบการณ์ที่มีการสตรีมตัวอย่างเปิดใช้งาน
ควบคุมพฤติกรรมการสตรีมรูปแบบบน Models เมื่อการสตรีมตัวอย่างถูกเปิดใช้งาน
ส่วนหลักของ Model หรือ nil ตั้งค่า
คุณสมบัติสำหรับเอดิเตอร์เท่านั้นที่ใช้เพื่อขยายโมเดลรอบจุดศูนย์กลางของมัน การตั้งค่าคุณสมบัตินี้จะเคลื่อนย้ายเครื่องชั่งเหมือนว่า Model/ScaleTo ถูกเรียกใช้บนมัน
กำหนดตำแหน่งที่ศูนย์กลางของ ซึ่งไม่ได้มีชุด ตั้งอยู่
วิธีการ
คืนจํานวน BaseParts ที่ถูกมองว่ามีการใช้งานทางกายภาพเนื่องจากอยู่ภายใต้อิทธิพลของฟิสิกส์เมื่อเร็ว ๆ นี้
คืนตัวเลขที่อยู่ระหว่าง 0 และ 100 ซึ่งแทนที่เปอร์เซ็นต์ของการจำลองทางกายภาพที่กําลังถูกจํากัดในเวลาจริง
คืนจํานวนเฟรมต่อวินาทีที่ฟิสิกส์กําลังถูกจําลองอยู่ในขณะนี้
restores เวลา Unix ของเซิร์ฟเวอร์ในวินาที
สร้างข้อต่อระหว่าง Parts ที่กำหนดและส่วนใดก็ได้ที่สัมผัสขึ้นอยู่กับพื้นผิวของชิ้นส่วนและโหมดการสร้างข้อต่อที่กำหนด
ส่งคืน true หากเกมมีตัวแก้ไขฟิสิกส์ PGS เปิดใช้งาน
ทำลายข้อต่อทั้งหมดระหว่าง BaseParts และอื่น ๆ BaseParts ที่ระบุ
ตำแหน่งและซูม Workspace.CurrentCamera เพื่อแสดงขนาดของ BaseParts ในปัจจุบันใน Workspace
ส่งคืนจริงหากใดๆ ของที่กำหนด BasePart สัมผัสกับส่วนอื่น
โค้งรูปแบบบล็อกในทิศทางที่กำหนดและส่งคืน RaycastResult หากรูปแบบชนกับเซลล์ BasePart หรือ Terrain
คืนค่าเป็นคอลเลกชันของชิ้นส่วนที่มีกล่องผูกข้อมูล ซ้อนทับกล่องที่กำหนด
คืนค่าเป็นคอลเลกชันของชิ้นส่วนที่มีกล่องผูกข้อมูล ซึ่งซ้อนทับทรงกลมที่กำหนด
ส่งคืนคอลเลกชันของชิ้นส่วนที่พื้นที่ใช้งานแบ่งปันกับชิ้นส่วนที่กำหนดไว้
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):()
ย้ายส่วนที่กำหนดไว้ไปยังตำแหน่งที่กำหนดผ่านกินามิกส์ย้อนกลับแทนที่จะย้ายไปที่นั่นโดยตรงเพื่อให้แน่ใจว่าข้อต่อ ข้อจำกัด หรือการชนกันที่ส่วนมีส่วนร่วมจะได้รับความพึงพอใจทางกายภาพ
โค้งรัศมีโดยใช้จุดเริ่มต้น ทิศทาง และ RaycastParams ตัวเลือก จากนั้นจะส่งคืน RaycastResult หากวัตถุหรือพื้นที่ที่เหมาะสมตัดกับรัศมี
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
โค้งรูปทรงกลมในทิศทางที่กำหนดและส่งคืน RaycastResult หากรูปทรงชนกับเซลล์ BasePart หรือ Terrain
เพิ่มการจำลองสำหรับชิ้นส่วนในโลกไปข้างหน้าตามการเพิ่มเวลาที่กำหนดและชุดตั้งค่าทางเลือก BaseParts ที่เลือก
ตั้งค่าโมเดลนี้ให้เป็นถาวรสำหรับผู้เล่นที่ระบุModel.ModelStreamingMode ต้องตั้งค่าเป็น PersistentPerPlayer เพื่อให้พฤติกรรมเปลี่ยนแปลงเนื่องจากการเพิ่ม
คืนคำอธิบายของระดับที่มีส่วนประกอบทั้งหมดของโมเดล
คืนขนาดของกล่องล้อมรอบขนาดเล็กที่มีทั้งหมด BaseParts ใน Model สอดคล้องกับ Model.PrimaryPart หากกำหนดไว้
คืนวัตถุทั้งหมด Player ที่วัตถุรูปแบบนี้มีอยู่อย่างถาวรพฤติกรรมแตกต่างกันขึ้นอยู่กับว่าวิธีนี้ถูกเรียกจาก Script หรือ LocalScript หรือไม่
ส่งคืนเครื่องชั่งหลักของโมเดลซึ่งเริ่มต้นที่ 1 สำหรับโมเดลที่สร้างขึ้นใหม่และจะเปลี่ยนเมื่อมันถูกขยายผ่าน Model/ScaleTo
ย้าย PrimaryPart ไปยังตำแหน่งที่กำหนด หากส่วนหลักไม่ได้ระบุไว้ ส่วนรากของโมเดลจะถูกใช้
ทำให้โมเดลนี้ไม่ยังคงอยู่สำหรับผู้เล่นที่ระบุแล้วModel.ModelStreamingMode ต้องตั้งค่าเป็น PersistentPerPlayer เพื่อให้พฤติกรรมเปลี่ยนแปลงเนื่องจากการลบ
ตั้งตัวคูณขนาดของโมเดลโดยปรับขนาดและตำแหน่งของโอนุการทั้งหมดเพื่อให้มีตัวคูณขนาดเท่ากับขนาดและตำแหน่งเดิมเมื่อตัวคูณขนาดอยู่ที่ 1
เปลี่ยน Model โดยออฟเซ็ตที่กำหนด Vector3 เพื่อรักษาการจัดตำแหน่งของรูปแบบหากอีก BasePart หรือ Terrain มีอยู่แล้วในตำแหน่งใหม่แล้ว ตัว Model จะซ้อนบนวัตถุที่กล่าวถึง
รับจุดศูนย์กลางของ PVInstance .
เปลี่ยน PVInstance พร้อมกับบรรดาลูกหลานทั้งหมดของมัน PVInstances ทำให้จุดศูนย์กลางอยู่ที่ตําแหน่งที่ระบุแล้ว CFrame
อีเวนต์
จุดไฟเมื่อโมเดลถาวรถูกส่งไปยังผู้เล่นที่ระบุ
คุณสมบัติ
AirDensity
ระดับพื้นดิน ( Y ของ 0) ความหนาแน่นของอากาศในหน่วย RMU/stud³ (ดู หน่วย Roblox ), ใช้เพื่อคำนวณแรงอากาศถ้า Workspace.FluidForces เป็น Experimentalค่าเริ่มต้นสอดคล้องกับความหนาแน่นของอากาศระดับทะเลที่เป็นจริงที่อุณหภูมิและความดันมาตรฐานความหนาแน่นของอากาศลดลงเมื่อความสูง Y เพิ่มขึ้น ถึง 5% ของมูลค่าระดับพื้นดินที่ 100,000 สตัดด้านล่าง Y ของ 0 ความหนาแน่นของอากาศจะถูกกำหนดไว้ที่ค่าอินพุต
AllowThirdPartySales
คุณสมบัตินี้ Workspace จะกำหนดว่าสินทรัพย์ที่สร้างขึ้นโดยการใช้งานอื่นสามารถขายได้ในเกมหรือไม่
การขายของบุคคลที่สามคืออะไร?
เมื่อค่านี้เป็นเท็จเนื่องจากเป็นค่าเริ่มต้น เฉพาะสินทรัพย์ที่สร้างโดยผู้สร้างสถานที่ (ไม่ว่าจะเป็นผู้เล่นหรือกลุ่ม) และ Roblox สามารถขายได้โดยใช้ MarketplaceService
ในกรณีส่วนใหญ่เกมไม่จำเป็นต้องขายสินทรัพย์ของบุคคลที่สามอย่างไรก็ตามบางเกมเช่นสถานที่พบปะแลกเปลี่ยนต้องการคุณสมบัตินี้และดังนั้นจึงมีอยู่เป็นตัวเลือกที่เลือกได้
ผลิตภัณฑ์บุคคลที่สามอะไรที่ฉันสามารถขายได้?
โปรดทราบว่า ผลิตภัณฑ์นักพัฒนา สามารถขายได้เฉพาะในเกมที่พวกเขาเกี่ยวข้องเท่านั้น ไม่ว่า AllowThirdPartySales จะถูกตั้งค่าเป็นอย่างไรคุณสมบัตินี้มีผลต่อ บัตรผ่านเกม และ เสื้อผ้า
AvatarUnificationMode
ClientAnimatorThrottling
ระบุ Enum.ClientAnimatorThrottlingMode ที่จะใช้สำหรับไคลเอนต์ท้องถิ่น
เมื่อเปิดใช้งานแล้ว แอนิเมชั่นบนตัวอย่างที่จำลองไกล Model จะเริ่มลดความเร็วด้วย:
- ยิงมุมมองบุคคลที่หนึ่งในเกม
- จํานวนแอนิเมชั่นที่ใช้งานอยู่
CurrentCamera
วัตถุ Camera ที่ใช้โดยผู้เล่นท้องถิ่น
วิธีใช้กล้องปัจจุบัน
เมื่อมองหาวัตถุของไคลเอนต์ Camera ใช้คุณสมบัตินี้แทนที่จะมองหาลูกของ Workspace ที่ชื่อว่า "กล้อง"
เมื่อคุณตั้งค่าคุณสมบัตินี้, วัตถุทั้งหมดอื่น ๆ Camera ใน Workspace จะถูกทําลาย, รวมถึงก่อนหน้านี้ CurrentCameraหากคุณตั้งค่าคุณสมบัตินี้เป็น nil หรือไปยังกล้องที่ไม่ใช่ลูกหลานของพื้นที่ทำงาน (หรือ CurrentCamera ไม่ได้ถูกทําลายอย่างอื่น) จะมีการสร้างและกำหนด Camera ใหม่หลีกเลี่ยงสถานการณ์เหล่านี้ เนื่องจากการทำลายกล้องอาจมีผลกระทบที่ไม่คาดคิด
สำหรับข้อมูลเพิ่มเติม ดู สคริปต์กล้อง
DistributedGameTime
จํานวนเวลาในวินาทีที่เกมทํางานอยู่
แม้ว่าชื่อจะเป็นเช่นนั้น แต่มูลค่านี้ไม่ได้ "กระจาย" ไปทั่วไคลเอนต์และเซิร์ฟเวอร์ในปัจจุบันแทนที่จะเป็นเซิร์ฟเวอร์ที่แสดงระยะเวลาที่เซิร์ฟเวอร์ทำงานอยู่บนไคลเอนต์ มันแสดงระยะเวลาที่ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์มานานแค่ไหน
นักพัฒนาไม่ควรพึ่งพาพฤติกรรมดังกล่าวข้างต้นและเป็นไปได้ที่คุณสมบัตินี้จะถูกซิงโครไลซ์ไปยังไคลเอนต์และเซิร์ฟเวอร์ในอนาคต
ผู้ที่กำลังมองหาเวลาตั้งแต่โปรแกรมเริ่มทำงานควรใช้ฟังก์ชัน 'time' แทนดูด้านล่างสำหรับการเปรียบเทียบระหว่าง DistributedGameTime และทางเลือกอื่นๆ
local Workspace = game:GetService("Workspace")print(Workspace.DistributedGameTime) -- Time the game started runningprint(os.time()) -- Time since epoch (1 January 1970, 00:00:00) UTCprint(tick()) -- Time since epoch (1 January 1970, 00:00:00) system timeprint(time()) -- Time the game started runningprint(elapsedTime()) -- Time since Roblox started running
FallHeightEnabled
FallenPartsDestroyHeight
คุณสมบัตินี้กำหนดความสูงที่ Roblox เครื่องยนต์จะลบอย่างอัตโนมัติ BaseParts และบรรพบุรุษของพวกเขา Models จาก Workspace โดยการปลูกฝังพวกเขาให้กับ nilเพื่อป้องกันไม่ให้ชิ้นส่วนที่ล้มออกจากแผนที่ยังคงล้มตลอดไป
หากชิ้นส่วนถูกลบเนื่องจากพฤติกรรมนี้เป็นชิ้นส่วนสุดท้ายใน Model โมเดลก็จะถูกลบเช่นกันสิ่งนี้ใช้กับบรรพบุรุษรุ่นทั้งหมดของชิ้นส่วน
คุณสมบัตินี้ถูกขัดขวางระหว่าง -50,000 และ 50,000 เพราะ BaseParts ไม่ได้จำลองหรือแสดงอย่างถูกต้องในระยะไกลจากจุดเริ่มต้นเนื่องจากความไม่ถูกต้องของจุดทศนิยม
คุณสมบัตินี้สามารถอ่านโดยสคริปต์ แต่สามารถตั้งค่าได้เฉพาะโดยปลั๊กอิน แถบคําสั่ง หรือหน้าต่างคุณสมบัติใน Studio
FluidForces
ด้วยคุณสมบัตินี้เปิดใช้งานแล้ว เครื่องกลศาสตร์จะคำนวณแรงอากาศพลศาสตร์บน BaseParts ที่คุณสมบัติ EnableFluidForces เป็นจริงค่าเริ่มต้น, Default , ปิดใช้งานแรงอากาศพลศาสตร์โปรดทราบว่าคุณสมบัตินี้ไม่สามารถตั้งผ่านการเขียนสคริปต์ได้ แต่ต้องเปิดใช้งานใน Studio แทน
GlobalWind
คุณสมบัตินี้ระบุทิศทางและความแรงที่ลมพัดผ่านประสบการณ์ ซึ่งส่งผลต่อหญ้าพื้นที่ เมฆไดนามิก และอนุภาคดูบทความ ลมทั่วโลก สำหรับรายละเอียด
Gravity
กำหนดการเร่งความเร็วเนื่องจากแรงโน้มถ่วงที่ใช้กับการลดลง BasePartsค่านี้จะวัดเป็นสตัดต่อวินาทีและโดยปกติจะตั้งค่าเป็น 196.2 สตัดต่อวินาที 2โดยการเปลี่ยนค่านี้ ผู้พัฒนาสามารถจำลองผลกระทบของแรงโน้มถ่วงที่ต่ำกว่าหรือสูงกว่าในเกม
ตัวอย่างโค้ด
This script creates a touch pad in the workspace that, when touched, will reduce the game's gravity. Activating the pad again will switch back to normal gravity.
local MOON_GRAVITY_RATIO = 1.62 / 9.81
local DEFAULT_GRAVITY = 196.2
local MOON_GRAVITY = DEFAULT_GRAVITY * MOON_GRAVITY_RATIO
-- Create a touch pad
local pad = Instance.new("Part")
pad.Size = Vector3.new(5, 1, 5)
pad.Position = Vector3.new(0, 0.5, 0)
pad.Anchored = true
pad.BrickColor = BrickColor.new("Bright green")
pad.Parent = workspace
-- Listen for pad touch
local enabled = false
local debounce = false
local function onPadTouched(_hit)
if not debounce then
debounce = true
enabled = not enabled
workspace.Gravity = enabled and MOON_GRAVITY or DEFAULT_GRAVITY
pad.BrickColor = enabled and BrickColor.new("Bright red") or BrickColor.new("Bright green")
task.wait(1)
debounce = false
end
end
pad.Touched:Connect(onPadTouched)
IKControlConstraintSupport
เปิดใช้งานการสนับสนุนข้อจํากัดสําหรับ IKControlsค่า Default มีค่าเท่ากับ Enabled .หากปิดใช้งาน IKControls จะเพิกเฉยข้อจำกัดด้านฟิสิกส์ดู IKControl สำหรับรายละเอียดเพิ่มเติม
InsertPoint
MeshPartHeadsAndAccessories
ตั้งค่าว่าหัวตัวละครและอุปกรณ์เสริมควรดาวน์โหลดเป็น MeshPartsค่า Default มีค่าเท่ากับ Enabled .หากคุณลักษณะนี้เปิดใช้งานแล้ว อวตารที่ติดตั้งจะใช้ MeshParts สำหรับหัวของตัวละครและอุปกรณ์เสริม
ModelStreamingBehavior
MoverConstraintRootBehavior
ควบคุมโลจิสติกที่ใช้เพื่อเลือกส่วนรากของการประกอบสำหรับเครื่องมือที่ใช้ข้อจำกัดใดๆ ต่อไปนี้:
เมื่อคุณสร้างคุณสมบัตินี้เป็น Enum.MoverConstraintRootBehaviorMode.Enabled ความจํากัดเหล่านี้จะถูกเพิกเฉยเมื่อเลือกส่วนรากของการรวมถ้าข้อจํากัดไม่ส่งแรงระหว่างสองส่วน (ตัวอย่างบางส่วนคือ AngularVelocity.ReactionTorqueEnabled ตั้งค่าเป็น false , AlignPosition.ReactionForceEnabled ตั้งค่าเป็น false หรือ AlignOrientation.Mode ตั้งค่าเป็น Enum.OrientationAlignmentMode.OneAttachment )
เมื่อคุณสร้างคุณสมบัตินี้เป็น Enum.MoverConstraintRootBehaviorMode.Disabled ข้อจํากัดเหล่านี้อาจถูกพิจารณาผิดพลาดเมื่อเลือกส่วนรากของการรวบรวมทำให้เกิดการเป็นเจ้าของเครือข่ายไม่สอดคล้องและความล่าช้าเมื่อเพิ่มข้อจํากัดเหล่านี้ให้กับเครื่องมือ
PathfindingUseImprovedSearch
PhysicsImprovedSleep
PhysicsSteppingMethod
กำหนดวิธีที่ตัวแก้ปัญหาจะเร่งการจำลองทางฟิสิกส์ไปข้างหน้าในเวลาตัวเลือกนี้ไม่สามารถสคริปต์ได้และต้องตั้งค่าจากคุณสมบัติ PhysicsSteppingMethod ของ พื้นที่ทำงาน ภายใน Studioดู การจับเวลาแบบปรับตัว สำหรับรายละเอียด
<th>คําอธิบาย</th></tr></thead><tbody><tr><td><b>การปรับตัว</b></td><td>เครื่องยนต์พยายามกำหนดอัตราการจำลองที่เหมาะสมสำหรับชิ้นส่วนแต่ละชิ้นที่ 240 Hz, 120 Hz หรือ 60 Hzการตั้งค่านี้จะได้รับการปรับแต่งเพื่อประสิทธิภาพ</td></tr><tr><td><b>แก้ไข</b></td><td>ชิ้นส่วนจำลองทั้งหมดภายในพื้นที่ทำงานจะเคลื่อนไปข้างหน้าที่ความถี่ 240 Hz ตัวเลือกนี้เหมาะสำหรับความเสถียรและความแม่นยำในการจำลองที่ดีที่สุด</td></tr><tr><td><b>ค่าเริ่มต้น</b></td><td>ค่าเริ่มต้นปัจจุบันคือ <b>แก้ไข</b></td></tr></tbody>
ตัวเลือก |
---|
โปรดทราบว่าเมื่อชิ้นส่วนของอัตราการจำลองที่แตกต่างกันเชื่อมต่อผ่าน Constraints หรือการชนกัน เครื่องมือรวมจะเริ่มต้นด้วยอัตราการจำลองสูงสุดสำหรับความเสถียร
PlayerCharacterDestroyBehavior
PrimalPhysicsSolver
RejectCharacterDeletions
RenderingCacheOptimizations
ReplicateInstanceDestroySetting
Retargeting
SandboxedInstanceMode
SignalBehavior
คุณสมบัตินี้กำหนดว่าตัวจัดการเหตุการณ์จะถูกระงับทันทีเมื่อเหตุการณ์เกิดขึ้นหรือถูกเลื่อนออกไปแล้วกลับมาที่จุดระงับเหตุการณ์ในภายหลังจุดการดำเนินการต่อปัจจุบันรวมถึง:
- การประมวลผลการป้อนข้อมูล (ดำเนินการต่อเมื่อมีการป้อนข้อมูลที่จะประมวลผล ดู UserInputService )
- สคริปต์รอดำเนินการต่อที่มีอยู่แล้ว เช่น wait() , spawn() และ delay()
สำหรับข้อมูลเพิ่มเติม ดู กิจกรรมถูกเลื่อนออก
StreamOutBehavior
การควบคุม StreamOutBehavior ที่จะปลดเนื้อหาออกจากอุปกรณ์ตามเงื่อนไขหน่วยความจําอุปกรณ์ หรือตามรัศมีการสตรีม
ดูเพิ่ม:
- Workspace.StreamingEnabled ซึ่งควบคุมว่าการสตรีมเนื้อหาจะเปิดใช้งานหรือไม่
StreamingEnabled
คุณสมบัติ StreamingEnabled กำหนดว่าการสตรีมเนื้อหาเกมจะเปิดใช้งานสำหรับสถานที่หรือไม่คุณสมบัตินี้ไม่สามารถสคริปต์ได้และจึงต้องตั้งค่าในวัตถุ พื้นที่ทำงาน ใน Studio
ดูเพิ่ม:
StreamingIntegrityMode
หากตัวอย่าง สตรีม เปิดใช้งานแล้ว ประสบการณ์อาจทำงานในลักษณะที่ไม่คาดคิดหากตัวละครของผู้เล่นย้ายไปยังภูมิภาคของโลกที่ยังไม่ถูกสตรีมไปยังไคลเอนต์คุณลักษณะความสมบูรณ์ของการสตรีมช่วยให้มีวิธีหลีกเลี่ยงสถานการณ์ที่อาจเป็นปัญหาได้
StreamingMinRadius
คุณสมบัติ StreamingMinRadius บ่งบอกรัศมีรอบตัวละครของผู้เล่นหรือ ReplicationFocus ปัจจุบันที่เนื้อหาจะถูกสตรีมในลําดับความสําคัญสูงสุดค่าเริ่มต้นเป็น 64 สตัด
ควรใช้ความระมัดระวังเมื่อเพิ่มรัศมีขั้นต่ำเริ่มต้นเนื่องจากการทำเช่นนั้นจะต้องใช้หน่วยความจำเพิ่มเติมและความถี่ของเซิร์ฟเวอร์เพิ่มเติมในค่าใช้จ่ายของส่วนประกอบอื่น
ดูเพิ่ม:
- Workspace.StreamingEnabled ซึ่งควบคุมว่าการสตรีมเนื้อหาจะเปิดใช้งานหรือไม่
StreamingTargetRadius
คุณสมบัติ StreamingTargetRadius ควบคุมระยะสูงสุดที่ห่างจากตัวละครของผู้เล่นหรือปัจจุบัน ReplicationFocus ในซึ่งเนื้อหาจะถูกสตรีมค่าเริ่มต้นเป็น 1024 สตัด
โปรดทราบว่าเครื่องยนต์สามารถเก็บเนื้อหาที่โหลดไว้ก่อนหน้านี้นอกรัศมีเป้าหมายได้ ตามที่หน่วยความจําอนุญาต
ดูเพิ่ม:
- Workspace.StreamingEnabled ซึ่งควบคุมว่าการสตรีมเนื้อหาจะเปิดใช้งานหรือไม่
Terrain
คุณสมบัตินี้เป็นการอ้างอิงถึงวัตถุ Terrain ที่เป็นพ่อของ Workspace

ดู พื้นที่สภาพแวดล้อม สำหรับข้อมูลเพิ่มเติม
TouchEventsUseCollisionGroups
TouchesUseCollisionGroups
คุณสมบัตินี้กำหนดว่า parts ในกลุ่มที่แตกต่างกันที่ตั้งค่าให้ไม่ชนกันจะไม่เพิกเฉยการชนกันและการสัมผัสเหตุการณ์โดยค่าเริ่มต้นของคุณสมบัตินี้จะถูกตั้งเป็น false
เมื่อคุณสมบัตินี้เปิดใช้งานแล้ว ส่วนในกลุ่มที่แตกต่างกันที่ตั้งค่าให้ไม่ชนกันจะเพิกเฉยคุณสมบัติ CanTouch เช่นเดียวกับวิธีที่ BasePart.CanCollide ถูกเพิกเฉยสำหรับข้อมูลเพิ่มเติมเกี่ยวกับพฤติกรรมของ CanTouch โปรดไปที่หน้าทรัพย์สินของมัน
วิธีการ
GetNumAwakeParts
คืนจํานวน BaseParts ที่ถูกมองว่ามีการใช้งานทางกายภาพเนื่องจากอยู่ภายใต้อิทธิพลของฟิสิกส์เมื่อเร็ว ๆ นี้
ฟังก์ชันนี้ให้มาตรวัดว่ามีกี่ BaseParts ที่ได้รับอิทธิพลจากหรือเมื่อเร็ว ๆ นี้อยู่ภายใต้อิทธิพลของพลังกายกายภาพ
local Workspace = game:GetService("Workspace")print(Workspace:GetNumAwakeParts())
การนอนหลับกับชิ้นส่วนที่ตื่นตัว
การดำเนินการRoblox ตั้ง BaseParts ซึ่งไม่มีการใช้ฟิสิกส์ในสถานะ 'หลับ'BaseParts กับ BasePart.Anchored ตั้งค่าเป็นจริงเสมอเนื่องจากไม่มีการใช้ฟิสิกส์กับพวกเขาเมื่อใช้แรงกับ non anchored BasePart จะมีการใช้สถานะ 'ตื่น'ในขณะที่ BasePart ยังคงตื่นอยู่ เครื่องกลศาสตร์ของ Roblox จะดำเนินการคำนวณอย่างต่อเนื่องเพื่อให้แน่ใจว่าแรงกายภาพโต้ตอบกับชิ้นส่วนอย่างถูกต้องเมื่อ BasePart ไม่อยู่ภายใต้แรงกระทําทางกายภาพอีกต่อไป มันจะกลับสู่สถานะ 'หลับ'
ส่งค่ากลับ
จํานวนชิ้นส่วนที่ตื่นอยู่
GetPhysicsThrottling
คืนตัวเลขที่อยู่ระหว่าง 0 และ 100 ซึ่งแทนที่เปอร์เซ็นต์ของการจำลองทางกายภาพที่กําลังถูกจํากัดในเวลาจริง
ฟังก์ชันนี้สามารถใช้เพื่อตรวจสอบว่าการชะลอตัวของฟิสิกส์เกิดขึ้นหรือไม่ และในระดับใด
การจํากัดความเร็วของฟิสิกส์คืออะไร?
การหดปริมาณการใช้พลังงานของฟิสิกส์เกิดขึ้นเมื่อเครื่องฟิสิกส์ตรวจพบว่าไม่สามารถทันกับเกมในเวลาจริงได้เมื่อฟิสิกส์ถูกจํากัดการใช้งาน มันจะอัปเดตบ่อยน้อยลงทําให้ BaseParts ปรากฏเพื่อเคลื่อนที่ช้าลง
โดยไม่ต้องลดความเร็ว การจำลองฟิสิกส์จะตกอยู่ข้างหลังเกมออกไปอีกสิ่งนี้อาจนำไปสู่อัตราเฟรมที่ต่ำกว่าและพฤติกรรมที่ไม่พึงประสงค์อื่นๆ
วัตถุที่เกี่ยวข้องกับ Humanoids จะได้รับการยกเว้นจากการลดอัตราการเร่งของฟิสิกส์
ดูเพิ่มเติม Workspace:SetPhysicsThrottleEnabled() .
สาธิตการลดความเร็วของฟิสิกส์
นักพัฒนาควรหลีกเลี่ยงการสร้างสถานที่ที่ทําให้เครื่องกลศาสตร์เหนื่อยเกินไป เนื่องจากมันนําไปสู่ประสบการณ์ระดับต่ําสําหรับผู้เล่นอย่างไรก็ตามผู้ที่ต้องการจำลองการลดความเร็วของฟิสิกส์เพื่อวัตถุประสงค์ในการวิจัยจำเป็นต้องสร้างจํานวนมากของ Parts อย่างรวดเร็วเท่านั้น
local Workspace = game:GetService("Workspace")local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", Workspace)end
ส่งค่ากลับ
เปอร์เซ็นต์ของเวลาจริงที่การจำลองฟิสิกส์กําลังถูกจํากัดอยู่ในขณะนี้
GetRealPhysicsFPS
คืนจํานวนเฟรมต่อวินาทีที่ฟิสิกส์กําลังถูกจําลองอยู่ในขณะนี้
ใช้ GetRealPhysicsFPS เพื่อต่อสู้กับผู้ใช้งานที่ละเมิด
การใช้งานทั่วไปของฟังก์ชันนี้คือการตรวจสอบว่าผู้โจมตีกำลังเพิ่มอัตราเฟรมทางกายภาพท้องถิ่นของพวกเขาเพื่อเคลื่อนที่ได้เร็วขึ้นส่วนใหญ่จะทำโดยการเปรียบเทียบผลลัพธ์ที่ได้รับจาก GetRealPhysicsFPS ของไคลเอนต์กับสูงสุดที่จะไม่ถูกละเมิดในสถานการณ์ปกติ (โดยปกติ 65 หรือ 70)หากขีดจํากัดนี้ถูกละเมิด ผู้พัฒนาสามารถใช้ฟังก์ชัน Player:Kick() เพื่อลบ Player นั้นออกจากเกมเป็นสิ่งสำคัญที่ต้องจำไว้ว่าแม้ว่าการปฏิบัตินี้จะมีประสิทธิภาพบางครั้ง มาตรการป้องกันการใช้งานในด้านลูกค้าก็ไม่เคยเชื่อถือได้ 100%
ส่งค่ากลับ
คืนจํานวนเฟรมต่อวินาทีที่ฟิสิกส์กําลังถูกจําลองอยู่ในขณะนี้
ตัวอย่างโค้ด
Speed exploiters commonly increase their local physics FPS in order to increase their character speed. This can be detected from a LocalScript by checking if the player's physics FPS is over the maximum:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
while task.wait(1) do
if workspace:GetRealPhysicsFPS() > 65 then
player:Kick()
end
end
GetServerTimeNow
GetServerTimeNow() ส่งคืนความใกล้เคียงที่ดีที่สุดของไคลเอนต์เกี่ยวกับเวลาปัจจุบันบนเซิร์ฟเวอร์นี่มีประโยชน์สำหรับการสร้างประสบการณ์ที่ซิงค์ได้เนื่องจากทุกไคลเอนต์จะได้รับผลลัพธ์เดียวกันไม่ว่าจะเป็นเขตเวลาหรือนาฬิกาท้องถิ่น
นี้จะคืนเวลาที่ Unix คล้ายกับ os.time() ซึ่งสามารถใช้กับ os.date() หรือกับ DateTime.fromUnixTimestamp() ได้
เวลาที่ระบุโดยฟังก์ชันนี้จะถูกบรรเทาเพื่อให้:
- มันเป็น monotonic; มูลค่าของมันจะไม่ลดลงเลย
- มันเคลื่อนที่ด้วยอัตราเดียวกับนาฬิกาท้องถิ่นภายใน 0.6%
GetServerTimeNow() มีราคาแพงในการโทรเมื่อเทียบกับ DateTime.now() และมีความแม่นยําน้อยกว่า os.clock() ดังนั้นจึงควรใช้เพื่อให้แน่ใจว่าอีเวนต์เริ่มต้นในเวลาจริงหรือเพื่อปรับสิ่งต่างๆเป็นระยะเวลาเป็นประจำเพื่อให้แน่ใจว่าชุดของอีเวนต์จะสอดคล้องกัน
ฟังก์ชันนี้ขึ้นอยู่กับเซิร์ฟเวอร์ดังนั้นการโทรจากไคลเอนต์ที่ไม่ได้เชื่อมต่อจะทำให้เกิดข้อผิดพลาดโปรดทราบว่าฟังก์ชันนี้ไม่เหมาะสำหรับสิ่งที่เช่นรางวัลตามเวลาเนื่องจากไม่ปลอดภัยเมื่อเทียบกับการติดตามตัวจับเวลาเหล่านั้นบนเซิร์ฟเวอร์
ดูเพิ่ม:
- DistributedGameTime , นาฬิกาเวลาเกม
ส่งค่ากลับ
เวลาที่ประมาณการของ Unix บนเซิร์ฟเวอร์
JoinToOutsiders
ฟังก์ชันนี้สร้างข้อต่อระหว่างส่วนที่ระบุ Parts และส่วนใดก็ได้ที่สัมผัสขึ้นอยู่กับพื้นผิวของชิ้นส่วนและโหมดการสร้างข้อต่อที่ระบุ
ฟังก์ชันนี้สร้างข้อต่อระหว่างชิ้นส่วนที่ระบุและพื้นผิวที่สัมผัสได้ใดๆ ขึ้นอยู่กับพื้นผิวของชิ้นส่วนและโหมดการสร้างข้อต่อที่ระบุ
- กาว, สตัด, ทางเข้า, ทั่วไป, เชื่อมต่อ, และพื้นผิวเรียบทั้งหมดจะสร้างตัวอย่างการเชื่อมต่อ
- ทรงกลมจะไม่หลอมพื้นผิวกับอะไร ด้านโค้งของทรงกระบอกจะไม่หลอมพื้นผิว แต่ด้านข้างแบนจะทำได้
พารามิเตอร์แรกคือคอลเลกชันของ BasePartsข้อต่อจะถูกสร้างขึ้นเฉพาะระหว่างส่วนในอาร์เรย์และไม่ใช่ในอาร์เรย์เท่านั้นจะไม่สร้างข้อต่อระหว่างส่วนในคลัสเตอร์
พารามิเตอร์ที่สองคือ Enum.JointCreationMode ที่กำหนดวิธีการสร้างข้อต่อส่งมูลค่า enum ใด ๆ ไม่ว่าจะเป็น Enum.JointCreationMode.All หรือ Enum.JointCreationMode.Surface มีพฤติกรรมเดียวกันซึ่งเท่ากับเข้าร่วมเสมอ
ฟังก์ชันนี้ใช้โดยเครื่องมือย้าย Roblox Studio เมื่อผู้ใช้เสร็จสิ้นการย้ายส่วนหนึ่งร่วมกับ Plugin:GetJoinMode() และ Workspace:UnjoinFromOutsiders() สามารถใช้เพื่อรักษาฟังก์ชันการเชื่อมต่อเมื่อพัฒนาเครื่องมือสร้างสตูดิโอที่กำหนดเองดูส่วนตัวอย่างด้านล่างสำหรับตัวอย่าง
local Workspace = game:GetService("Workspace")
-- เสร็จสิ้นการย้ายการเลือก; ทำให้ข้อต่อ
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- เริ่มย้ายการเลือก; ทำลายข้อต่อ
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
พารามิเตอร์
ชุดของ BaseParts สำหรับผู้ที่จะทำข้อต่อ
The Enum.JointCreationMode ที่จะใช้ การส่งผ่านใน Enum.JointCreationMode.All หรือ Enum.JointCreationMode.Surface มีพฤติกรรมเดียวกันซึ่งเทียบเท่ากับเข้าร่วมเสมอ
ส่งค่ากลับ
PGSIsEnabled
ส่งคืน true หากเกมมีตัวแก้ไขฟิสิกส์ PGS เปิดใช้งาน
เนื่องจาก Workspace.PGSPhysicsSolverEnabled ไม่สามารถเข้าถึงได้โดยสคริปต์ ฟังก์ชัน PGSIsEnabled ช่วยให้นักพัฒนาสามารถบอกได้ว่าเกมกำลังใช้โซลูชันฟิสิกส์อันไหน
ส่งค่ากลับ
ถูกหากตัวแก้ PGS ถูกเปิดใช้งาน
UnjoinFromOutsiders
ทำลายข้อต่อทั้งหมดระหว่าง BaseParts และอื่น ๆ BaseParts ที่ระบุ
ฟังก์ชันนี้ต้องใช้คอลเลกชันของ BaseParts .โปรดทราบว่าจุดเชื่อมต่อจะไม่ถูกทำลายระหว่างเหล่านี้ BaseParts (ซึ่งกันและกัน) เฉพาะระหว่างเหล่านี้ BaseParts และอื่น ๆ BaseParts ไม่ได้อยู่ในอาร์เรย์
ฟังก์ชันนี้ใช้โดยเครื่องมือย้าย Roblox Studio เมื่อผู้ใช้เริ่มย้ายการเลือกร่วมกับ Plugin:GetJoinMode() และ Workspace:JoinToOutsiders() สามารถใช้เพื่อรักษาฟังก์ชันการเชื่อมต่อเมื่อพัฒนาเครื่องมือสร้างสตูดิโอที่กำหนดเองดูส่วนตัวอย่างด้านล่างสำหรับตัวอย่าง
local Workspace = game:GetService("Workspace")
-- Finished moving a selection; make joints
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Started moving a selection; break joints
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
พารามิเตอร์
ชุดของ BaseParts สำหรับผู้ที่จะทำลายข้อต่อ
ส่งค่ากลับ
ZoomToExtents
ตำแหน่งและซูม Workspace.CurrentCamera เพื่อแสดงขนาดของ BaseParts ในปัจจุบันใน Workspace
ฟังก์ชันนี้ถูกใช้ในปุ่ม 'ซูมไปยังขอบเขต' ที่ถูกลบออกใน Roblox Studio คุณสมบัติ'Zoom To' (F shortcut) แต่แสดงขอบเขตของ Workspace แทนที่จะเป็นวัตถุที่เลือกในปัจจุบัน
ฟังก์ชันนี้ไม่สามารถใช้ในสคริปต์ได้ แต่จะทำงานในแถบคําสั่งหรือปลั๊กอิน
ส่งค่ากลับ
อีเวนต์
PersistentLoaded
อีเวนต์นี้จะเกิดขึ้นทุกครั้งที่ผู้เล่นถูกส่งโมเดลถาวรทั้งหมดและโมเดลอะตอมแบบไม่มีส่วนพารามิเตอร์ player ระบุว่าผู้เล่นรายใดได้รับตัวอย่างทั้งหมดที่เกี่ยวข้อง
โปรดทราบว่าการโหลดประสบการณ์เกิดขึ้นก่อนการโหลดถาวรและการยิงของอีเวนต์ DataModel.Loaded ไม่บ่งบอกว่ามีโมเดลถาวรทั้งหมดอยู่