Roblox Studio มี โปรแกรมแก้ไขสคริปต์ ที่สร้างขึ้นเพื่อแก้ไขโค้ดในโปรเจกต์ Roblox ของคุณ โปรแกรมแก้ไขนี้มีฟีเจอร์สำคัญ เช่น การตรวจสอบข้อผิดพลาด การตรวจสอบประเภท การเติมอัตโนมัติ และการแก้ไขร่วมกัน
อย่างไรก็ตาม นักพัฒนาหลายคนมีโปรแกรมแก้ไขข้อความหรือสภาพแวดล้อมการพัฒนาที่พวกเขาชื่นชอบ เช่น Visual Studio Code, Cursor, Sublime Text, หรือ Notepad++ สภาพแวดล้อมการพัฒนาที่ได้รับความนิยมมักมีฟีเจอร์หรือปลั๊กอินที่ไม่มีใน Studio เพื่อใช้โปรแกรมแก้ไขหรือ IDE ภายนอกกับ Studio ให้เปิดใช้งานฟีเจอร์ การซิงค์สคริปต์
การซิงค์สคริปต์ทำงานโดยการซิงค์สคริปต์ใน โมเดลข้อมูล ของคุณไปยังไฟล์ข้อความในดิสก์ท้องถิ่น การเปลี่ยนแปลงที่ทำในไฟล์ Luau บนดิสก์จะถูกนำไปใช้กับสคริปต์ใน Studio และในทางกลับกัน การซิงค์นี้หมายความว่าคุณสามารถแก้ไขสคริปต์ในโปรแกรมแก้ไขภายนอกเช่น VS Code และเห็นการเปลี่ยนแปลงใน Studio ทันที
เมื่อใดควรใช้การซิงค์สคริปต์
หากคุณต้องการใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบหรือเช็คโค้ดเข้าสู่การควบคุมเวอร์ชัน แต่ใช้ Studio สำหรับทุกอย่างอื่น การซิงค์สคริปต์เป็นตัวเลือกที่ดี นอกจากนี้ยังทำงานร่วมกับ เครื่องมือการทำงานร่วมกันที่สร้างขึ้นใน Roblox ซึ่งเครื่องมือของบุคคลที่สามมักไม่มี
การซิงค์สคริปต์ทำงานได้ดีในโปรเจกต์ Roblox ที่มีอยู่ เนื่องจากเป็นฟีเจอร์เพิ่มเติมมากกว่าการเปลี่ยนแปลงทั้งหมดในวิธีการจัดการโปรเจกต์
หากคุณต้องการเช็คโปรเจกต์ทั้งหมดของคุณ (ไม่ใช่แค่โค้ด) เข้าสู่การควบคุมเวอร์ชันหรือใช้ระบบไฟล์ของคุณเป็นแหล่งข้อมูลที่ถูกต้องสำหรับโปรเจกต์ของคุณ เครื่องมือของบุคคลที่สาม (third-party tools) เช่น Rojo เป็นตัวเลือกที่ดีกว่า
ตั้งค่าการซิงค์สคริปต์
ใน Explorer ให้เลือกหนึ่งหรือหลายโฟลเดอร์ที่คุณต้องการซิงค์
คลิกขวาและเลือก Sync to….

เลือกไดเรกทอรีในคอมพิวเตอร์ของคุณ (หรือสร้างใหม่) และคลิก Save.
ใน Studio คลิกขวาที่โฟลเดอร์อีกครั้งและเลือก Script Sync ⟩ Reveal in Explorer (Windows) หรือ Reveal in Finder (macOS).
เปิดไดเรกทอรีในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ
หรือคุณสามารถคลิกขวาที่สคริปต์แต่ละตัวใน Studio และเลือก Open in External Editor.
คุณสามารถซิงค์สคริปต์แต่ละตัวได้ แต่เราขอแนะนำให้ซิงค์โฟลเดอร์; หากคุณซิงค์โฟลเดอร์ การซิงค์สคริปต์จะทำการซิงค์โฟลเดอร์และสคริปต์ลูกโดยอัตโนมัติ ซึ่งช่วยให้คุณสร้าง ลบ และเปลี่ยนชื่อสคริปต์ได้โดยไม่ต้องเปิดใช้งานการซิงค์ทุกครั้ง
หลังจากที่คุณตั้งค่าการซิงค์สคริปต์แล้ว คุณแทบจะต้องการ เพิ่มส่วนขยาย LSP ลงในโปรแกรมแก้ไขข้อความของคุณ
ข้อจำกัด
การซิงค์สคริปต์รองรับสคริปต์สูงสุด 10,000 สคริปต์ต่ออินสแตนซ์ที่ซิงค์ในระดับสูงสุดและสูงสุด 128 อินสแตนซ์ที่ซิงค์ในระดับสูงสุด ดังนั้นจึงสามารถขยายไปยังฐานโค้ดขนาดใหญ่ได้
การแก้ไขความขัดแย้ง
เมื่อเริ่มต้นหรือดำเนินการซิงค์ หากมีความแตกต่างระหว่าง Studio และไฟล์ของคุณในดิสก์ การซิงค์สคริปต์จะแสดงกล่องโต้ตอบการแก้ไขรายละเอียด กล่องโต้ตอบจะแสดงรายการว่าสคริปต์ใดจะถูกเพิ่ม แก้ไข หรือถูกลบในแต่ละด้านเพื่อให้คุณเข้าใจผลกระทบของการเลือก Keep Studio กับ Keep Disk
การลบแบบเลือก
เมื่อคุณลบสคริปต์หรือโฟลเดอร์ที่ซิงค์ใน Studio หรือในดิสก์ การซิงค์สคริปต์จะลบเฉพาะสคริปต์ Luau และไฟล์ที่รองรับเท่านั้น มันจะไม่ลบไฟล์หรือโฟลเดอร์ที่ไม่ใช่ Luau ที่มันไม่จัดการ; ทรัพย์สินที่ไม่ใช่สคริปต์เช่นโมเดลและชิ้นส่วนจะถูกเก็บรักษาไว้แม้ว่าคุณจะลบหรือจัดระเบียบรายการที่ซิงค์รอบ ๆ พวกเขาก็ตาม
Team Create
การซิงค์สคริปต์ทำงานร่วมกับ Team Create Explorer จะแสดงไอคอนบนอินสแตนซ์ที่ผู้ร่วมงานกำลังซิงค์อยู่ในขณะนี้ เพื่อป้องกันไม่ให้มีชื่อซ้ำกัน การซิงค์สคริปต์จะเพิ่มนามสกุลเชิงตัวเลขโดยอัตโนมัติให้กับชื่อของอินสแตนซ์ใหม่ใด ๆ ที่เพิ่มเข้ามาภายใต้ต้นไม้ที่คุณหรือผู้ร่วมงานกำลังซิงค์อยู่
หลีกเลี่ยงการทำงานที่มีหลายคนซิงค์สคริปต์เดียวกันและแก้ไขไฟล์ในเวลาเดียวกัน การซิงค์สคริปต์จะยังคงทำงานต่อไป แต่ผู้ร่วมงานอาจเขียนทับการเปลี่ยนแปลงของกันและกัน
เคล็ดลับสำคัญ
การซิงค์สคริปต์จะซิงค์เฉพาะ Script, LocalScript, ModuleScript และ Folder เท่านั้น อินสแตนซ์อื่น ๆ ทั้งหมดในโฟลเดอร์ที่ซิงค์จะถูกละเว้น หลีกเลี่ยงการซิงค์โฟลเดอร์ที่มีสคริปต์ควบคู่ไปกับอินสแตนซ์อื่น ๆ
คุณสามารถซิงค์แพ็คเกจได้ แม้ว่า PackageLink เองจะไม่ได้เขียนลงในดิสก์
อย่าซิงค์สคริปต์ที่มีแอตทริบิวต์หรือแท็ก การซิงค์สคริปต์จะละเว้นสิ่งเหล่านี้ ซึ่งอาจนำไปสู่การสูญเสียข้อมูลหากคุณสร้างหรือลบสคริปต์หรือเริ่มซิงค์กับเวอร์ชันเก่าของไฟล์ของคุณในดิสก์
การซิงค์สคริปต์ต้องการให้ชื่อของสคริปต์เข้ากันได้กับระบบไฟล์ของคุณ—ไม่มีชื่อซ้ำกันหรืออักขระที่ไม่รองรับ หาก Studio พบปัญหาใด ๆ เหล่านี้ มันจะโยนข้อผิดพลาดและขอให้คุณแก้ไขสถานการณ์ก่อนที่จะดำเนินการซิงค์ต่อ
หากไฟล์หรือโฟลเดอร์ที่ซิงค์ใด ๆ เปลี่ยนแปลงในขณะที่ Studio ปิดอยู่ Studio จะถามคุณว่าคุณต้องการแก้ไขสถานการณ์อย่างไรเมื่อคุณเปิดสถานที่อีกครั้ง
การลบอินสแตนซ์ระดับสูงสุด (หรือ "ราก")—อินสแตนซ์ที่คุณซิงค์ในตอนแรก—ในดิสก์ท้องถิ่นอาจทำให้ Studio โยนข้อผิดพลาด เพื่อที่จะลบอินสแตนซ์ระดับสูงสุด:
- ใน Studio คลิกขวาที่สคริปต์หรือโฟลเดอร์และเลือก Script Sync ⟩ Stop Sync.
- เลือกตัวเลือก Delete file(s) หรือ Delete folder(s) เพื่อลบอินสแตนซ์จากดิสก์ท้องถิ่นของคุณ
- ลบสคริปต์หรือโฟลเดอร์ใน Studio
คุณสามารถลบอินสแตนซ์ลูกใน Studio หรือในดิสก์ท้องถิ่นของคุณโดยไม่ต้องปิดการซิงค์ และการลบจะซิงค์ตามที่คุณคาดหวัง
ตั้งค่าเซิร์ฟเวอร์ภาษา
เซิร์ฟเวอร์ภาษาให้ฟีเจอร์เฉพาะทางด้านภาษาสำหรับโปรแกรมแก้ไขข้อความของคุณ เช่น การเติมอัตโนมัติ การตรวจสอบประเภท "ไปที่การกำหนด" และอื่น ๆ สำหรับ VS Code เราขอแนะนำ Luau Language Server
ส่วนขยายโปรโตคอลเซิร์ฟเวอร์ภาษา (LSP) ต้องเข้าใจลำดับชั้นโมเดลข้อมูลของโปรเจกต์เพื่อทำงานได้อย่างถูกต้อง ส่วนขยาย VS Code มาพร้อมกับปลั๊กอิน Studio ที่เป็นคู่ (Luau Language Server Companion) ที่ให้ข้อมูลนี้
เราขอแนะนำให้ติดตั้งทั้งสองอย่าง หากคุณใช้ส่วนขยาย VS Code และปลั๊กอิน Studio ที่เป็นคู่ ฟีเจอร์ด้านภาษาจะทำงานได้อย่างถูกต้องใน VS Code ขณะใช้การซิงค์สคริปต์
ส่วนขยายที่แนะนำ
- Roblox Luau LSP และ Luau Language Server Companion - ฟีเจอร์ด้านภาษา (ดูข้างต้น)
- selene - การวิเคราะห์โค้ดแบบสถิต (การตรวจสอบข้อผิดพลาด)
- StyLua - การจัดรูปแบบโค้ดอัตโนมัติ
กฎการซิงค์
เมื่อซิงค์อินสแตนซ์ที่มีลูกกับไดเรกทอรีในดิสก์ Studio จะซิงค์การสร้าง เปลี่ยนชื่อ ย้าย และลบโดยอัตโนมัติในลูกกับไฟล์และโฟลเดอร์ที่สอดคล้องกันในดิสก์ วิธีการนี้ช่วยให้คุณรักษาโค้ดของคุณโดยไม่ต้องหยุดและเริ่มการซิงค์ด้วยตนเองในสคริปต์แต่ละตัว
ในดิสก์ การซิงค์สคริปต์ใช้กฎต่อไปนี้ในการแยกประเภทสคริปต์ที่แตกต่างกันออกจากกัน
| ข้อกำหนดการตั้งชื่อในดิสก์ | ประเภทอินสแตนซ์ใน Studio |
|---|---|
| name.luau | ModuleScript |
| name.server.luau | สคริปต์ที่มี Server Script.RunContext |
| name.client.luau | สคริปต์ที่มี Client Script.RunContext |
| name.local.luau | LocalScript |
| name.legacy.luau | สคริปต์ที่มี Legacy Script.RunContext |
| name.plugin.luau | สคริปต์ที่มี Plugin Script.RunContext |
| name/ (ไดเรกทอรี) | Folder |
| name/init.*.luau | อินสแตนซ์สคริปต์ที่มีลูก ประเภท (*) ถูกกำหนดโดยกฎข้างต้น |
การตั้งค่า
การซิงค์สคริปต์มีการตั้งค่าหลายอย่างในหน้าต่าง การตั้งค่า Studio (AltS หรือ ⌥S). ตัวเลือกเริ่มต้นเหมาะสำหรับกรณีการใช้งานส่วนใหญ่
| การตั้งค่า | คำอธิบาย |
|---|---|
| อัตโนมัติรีซูมซิงค์เมื่อเปิดสถานที่ | ว่า Studio ควรรีซูมการซิงค์เมื่อคุณเปิดสถานที่หรือไม่ การปิดการตั้งค่านี้จะลดประโยชน์ของการซิงค์สคริปต์อย่างมาก |
| รีซูมซิงค์ที่ขัดแย้งเมื่อเปิดสถานที่ | วิธีที่ Studio ควรจัดการกับความขัดแย้งเมื่อคุณเปิดสถานที่ ตัวเลือกเริ่มต้น Do not resume จะบังคับให้คุณต้องแก้ไขความขัดแย้งด้วยตนเองเพื่อหลีกเลี่ยงการสูญเสียข้อมูล คุณยังสามารถเลือกที่จะให้เวอร์ชันในดิสก์หรือเวอร์ชันใน Studio เป็นที่ชื่นชอบ |
| เก็บไฟล์/ไดเรกทอรีในท้องถิ่นหลังการซิงค์ | วิธีจัดการไฟล์ในดิสก์หลังจากที่คุณเลือก Script Sync > Stop Sync ใน Studio |
| นามสกุลไฟล์ | นามสกุลไฟล์ที่ใช้สำหรับสคริปต์ในดิสก์ |