ประเภทของสคริปต์และสถานที่

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


สำหรับนักพัฒนาหลายคน ความท้าทายพื้นฐานในการปรับให้เข้ากับการเขียนสคริปต์ใน Roblox คือความสำคัญของตำแหน่งของไฟล์และคุณสมบัติ Script.RunContext ขึ้นอยู่กับประเภทของสคริปต์, ตำแหน่งใน Explorer, และบริบทการทำงาน สคริปต์สามารถมีพฤติกรรมที่แตกต่างกันได้ บางครั้งการเรียกใช้วิธีอาจล้มเหลว, วัตถุในเกมของคุณอาจไม่สามารถเข้าถึงได้, หรือสคริปต์อาจไม่ทำงานเลย

สาเหตุของความซับซ้อนนี้คือเกม Roblox เป็นเกมแบบผู้เล่นหลายคนเป็นค่าเริ่มต้น สคริปต์ต้องสามารถทำงานได้เฉพาะบนเซิร์ฟเวอร์, ทำงานได้เฉพาะบนไคลเอนต์, หรือแบ่งปันกันได้ระหว่างทั้งสองฝ่าย การพัฒนาของแพลตฟอร์ม Roblox ตลอดระยะเวลานี้ได้ทำให้สถานการณ์ซับซ้อนยิ่งขึ้น

ประเภทของสคริปต์

Roblox มีสคริปต์อยู่สามประเภท:

  • Script - โค้ดที่ทำงานได้ทั้งบนเซิร์ฟเวอร์หรือไคลเอนต์ ขึ้นอยู่กับตำแหน่งและคุณสมบัติ Script.RunContext
  • LocalScript - โค้ดที่ทำงานได้เฉพาะบนไคลเอนต์ ไม่มีบริบทการทำงาน
  • ModuleScript - โค้ดที่คุณสามารถนำกลับมาใช้ใหม่ในสคริปต์อื่นๆ ไม่มีบริบทการทำงาน

เมื่อคุณสร้าง Script บริบทการทำงานเริ่มต้นของมันคือ Legacy หมายความว่า a) เป็นสคริปต์ฝั่งเซิร์ฟเวอร์ และ b) จะทำงานได้ก็ต่อเมื่ออยู่ในคอนเทนเนอร์เซิร์ฟเวอร์ เช่น Workspace หรือ ServerScriptService

  • หากคุณเปลี่ยนบริบทการทำงานของสคริปต์เป็น Server มันจะสามารถทำงานได้ใน ReplicatedStorage แต่ไม่แนะนำให้ทำ สินค้าในตำแหน่งนั้นจะถูกทำซ้ำไปยังไคลเอนต์ ดังนั้นมันจึงไม่ใช่สถานที่ที่ดีสำหรับสคริปต์ฝั่งเซิร์ฟเวอร์
  • หากคุณเปลี่ยนบริบทการทำงานของสคริปต์เป็น Client มันจะสามารถทำงานได้ใน ReplicatedStorage นอกจากนี้ยังสามารถทำงานได้ใน StarterCharacterScripts และ StarterPlayerScripts แต่คอนเทนเนอร์เริ่มต้นจะแสดงให้เห็นว่าสคริปต์ดั้งเดิม และ สำเนาของมันทำงาน ซึ่งไม่เป็นที่ต้องการ

ในการเปลี่ยนบริบทการทำงานของสคริปต์ ให้เลือกมันใน Explorer และเปลี่ยนค่าในหน้าต่าง Properties

คุณสมบัติ RunContext แสดงอยู่สำหรับสคริปต์

คำแนะนำ

  • ใส่สคริปต์ไคลเอนต์ลงใน ReplicatedStorage ด้วย RunContext ของ Client ควบคู่ไปกับ ModuleScripts ที่ใช้เฉพาะไคลเอนต์

    เมื่อทำการตรวจสอบข้อผิดพลาดใน Studio คุณสามารถคลิกที่บรรทัดในหน้าต่าง Output และไปที่ ReplicatedStorage.YourScript (ตำแหน่งที่มั่นคงของสคริปต์) แทนที่จะเป็น Players.YourName.PlayerScripts.YourScript (ตำแหน่งชั่วคราวที่สคริปต์ถูกคัดลอกไปในระหว่างการทำงาน)

  • ใส่สคริปต์เซิร์ฟเวอร์ลงใน ServerScriptService ด้วย RunContext ของ Server ควบคู่ไปกับ ModuleScripts ที่ใช้เฉพาะเซิร์ฟเวอร์

  • เพื่อแบ่งปันโค้ดระหว่างสคริปต์เซิร์ฟเวอร์และไคลเอนต์ ให้ใช้ ModuleScripts ใน ReplicatedStorage

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

  • ใส่สคริปต์ไคลเอนต์จำนวนน้อยที่สุด (เช่น สคริปต์โหลด) ลงใน ReplicatedFirst ด้วย RunContext ของ Client หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่ ลำดับการทำซ้ำ

  • ใช้ LocalScripts ใน StarterCharacterScripts, StarterPlayerScripts, StarterGui, และ StarterPack

สถานที่ของสคริปต์

LocationDescription
Workspaceแทนโลก 3D ของเกม สถานที่นี้ทำงานได้ดีสำหรับสคริปต์ของเซิร์ฟเวอร์ที่เชื่อมต่อโดยตรงกับวัตถุและควบคุมพฤติกรรมของมัน
ReplicatedFirstมีวัตถุที่ทำซ้ำไปยังไคลเอนต์ก่อนสิ่งอื่นใด สถานที่นี้เหมาะสำหรับเซ็ตวัตถุและสคริปต์ของไคลเอนต์ที่ต้องใช้ขั้นต่ำที่สุดเพื่อแสดงหน้าจอโหลด
ReplicatedStorageมีวัตถุที่ถูกทำซ้ำไปยังทั้งไคลเอนต์และเซิร์ฟเวอร์ สถานที่นี้เหมาะสำหรับ ModuleScripts ที่คุณต้องการใช้ทั้งในเซิร์ฟเวอร์และไคลเอนต์ LocalScripts จะไม่ทำงานจากสถานที่นี้ แต่ Scripts ที่มี RunContext เป็น Client จะทำงาน
ServerScriptServiceมีสคริปต์ของเซิร์ฟเวอร์ สถานที่นี้เหมาะสำหรับสคริปต์ที่ต้องการเข้าถึงฟังก์ชันการทำงานหรือวัตถุฝั่งเซิร์ฟเวอร์ เช่น เกมลอจิกและคลาวด์สโตเรจ
ServerStorageมีวัตถุฝั่งเซิร์ฟเวอร์ สถานที่นี้เหมาะสำหรับวัตถุขนาดใหญ่ที่ไม่จำเป็นต้องถูกทำซ้ำไปยังไคลเอนต์ในทันทีเมื่อพวกเขาเข้าร่วมเกม สคริปต์จะไม่ทำงานจากสถานที่นี้ แต่คุณสามารถเก็บ ModuleScripts ฝั่งเซิร์ฟเวอร์ที่นี่ได้
StarterPlayerStarterCharacterScriptsมี LocalScripts ที่ทำงานเมื่ออักขระเกิดขึ้น
StarterPlayerStarterPlayerScriptsมี LocalScripts ที่ใช้งานทั่วไปซึ่งทำงานเมื่อผู้เล่นเข้าร่วมเกม
StarterGuiมีองค์ประกอบ GUI ที่ไคลเอนต์แสดงเมื่อโหลดเกม LocalScripts สามารถทำงานจากสถานที่นี้ สถานที่นี้เหมาะสำหรับสคริปต์ที่ปรับเปลี่ยนอินเทอร์เฟซผู้ใช้ของเกม เช่น การเพิ่มปุ่ม เมนู และป๊อปอัป
StarterPackโดยทั่วไปจะมีเพียง Tools แต่ก็สามารถรวมถึง LocalScripts สำหรับตั้งค่ากระเป๋าผู้เล่นได้

ภาพนี้แสดงให้เห็นว่าสถานที่ในหน้าต่าง Explorer ใดที่สามารถเก็บสคริปต์ไคลเอนต์ไว้ได้ จำไว้ว่าตำแหน่ง ReplicatedFirst และ ReplicatedStorage สามารถมี Scripts ที่มี RunContext เป็น Client ขณะที่คอนเทนเนอร์ Starter[] ควรใช้ LocalScripts

แผนภาพแสดงว่าสถานที่สคริปต์ใดทำงานบนไคลเอนต์

โครงสร้างโครงการตัวอย่าง

โครงการอ้างอิง Plant แสดงให้เห็นว่าคุณอาจจัดระเบียบโค้ดของคุณในเกมขนาดใหญ่และซับซ้อนได้อย่างไร

ที่ควรสังเกตเป็นพิเศษคือวิธีที่มันเก็บโค้ดส่วนใหญ่เป็น ModuleScripts ที่สามารถใช้งานซ้ำได้ใน ReplicatedStorage และ ServerStorage

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ