ตัวกำหนดการทํางาน

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

ตัวจัดการกำหนดเวลาภารกิจ สร้างความสอดคล้องระหว่างภารกิจที่ทําในแต่ละเฟรมในขณะที่เกมกําลังดําเนินการ แม้ว่าเกมจะถูกระงับก็ตาม ภารกิจเหล่านี้รวมถึงการตรวจจับการใส่ข้อมูลของผู้เล่น, การแอนิเมชั่นตัวละคร, การอัปเดตการจำลองฟิสิกส์, และการดำเนินการให้สคริปต์ในสถานะ task.wait() อีกครั้ง

แม้ว่าจะมีงานหลายอย่างที่ดำเนินการอยู่ แต่ตัวจัดกำหนดเวลางานอาจถูกโหลดเกินไปได้ โดยเฉพาะอย่างยิ่งในสถานการณ์ต่อไปนี้:

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

กรอบ

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

เรียกใช้บริการ

วิธีที่ตรงไปตรงมาที่สุดในการเพิ่มภารกิจเกมแบบเฟรมต่อเฟรมคือผ่านสมาชิกต่อไปนี้ของ RunService :

ลําดับความสําคัญของตัวจัดการเวลา

ตัวจัดการกำหนดเวลาภารกิจจะจัดหมวดหมู่และเสร็จสิ้นภารกิจตามลำดับต่อไปนี้บางภารกิจอาจไม่ทำงานในกรอบ ในขณะที่บางภารกิจอาจทำงานหลายครั้ง

แนวทางที่ดีที่สุด

เพื่อสร้างเกมที่มีประสิทธิภาพด้วยความคิดในใจ กำลังติดตาม:

  • อย่าเชื่อมโยง/ผูกฟังก์ชันกับขั้นตอนการเรนเดอร์ เว้นแต่จําเป็นอย่างยิ่ง: เฉพาะภารกิจที่ต้องทำหลังจากใส่แต่ก่อนที่จะเรนเดอร์จะต้องทำในลักษณะดังกล่าวเช่นการเคลื่อนไหวของกล้องสำหรับการควบคุมอย่างเคร่งครัดเกี่ยวกับคำสั่งซื้อใช้ BindToRenderStep() แทน PreRender

  • จัดการสถานะทางกายภาพอย่างระมัดระวัง: PreSimulation เกิดขึ้น ก่อน ฟิสิกส์ในขณะที่ PostSimulation เกิดขึ้น หลังจาก ฟิสิกส์ดังนั้นโลจิกเกมที่มีผลต่อสถานะฟิสิกส์จึงควรทำใน PreSimulation เช่นการตั้งค่า Velocity ของชิ้นส่วนในทางกลับกัน โลจิสติกของเกมที่พึ่งพาหรือตอบสนองต่อสถานะฟิสิกส์ควรจัดการใน PostSimulation เช่นอ่าน Position ของชิ้นส่วนเพื่อตรวจจับเมื่อพวกเขาเข้าสู่โซนที่กำหนด

  • การเปลี่ยนแปลงของ Motor6D ควรทำในอีเวนต์ PreSimulation: หากคุณไม่ทำ Animators จะเขียนทับการเปลี่ยนแปลงในกรอบถัดไปแม้ไม่มี Animator , PreSimulation เป็นอีเวนต์ Luau ครั้งสุดท้ายที่ยิงก่อนที่ Motor6D.Transform จะถูกนำไปใช้กับตําแหน่งส่วน