ประเภทและตำแหน่งของสคริปต์

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

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

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

ประเภทสคริปต์

Roblox มีสามประเภทของสคริปต์:

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

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

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

เพื่อเปลี่ยนบริบทการดําเนินการของสคริปต์ให้เลือกใน สํารวจ และเปลี่ยนค่าในหน้าต่าง คุณสมบัติ

RunContext property indicated for a Script.

คำแนะนำ

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

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

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

ตำแหน่งของสคริปต์

สถานที่ | คําอธิบาย :--- | :--- พื้นที่ทํางาน | แทนที่โลกเกมตำแหน่งนี้ทำงานได้ดีสำหรับสคริปต์เซิร์ฟเวอร์ที่แนบกับวัตถุและควบคุมพฤติกรรมของพวกเขาโดยตรงReplicatedFirst | มีวัตถุที่สําเนาไปยังไคลเอนต์ก่อนสิ่งอื่นใดตำแหน่งนี้เหมาะสำหรับชุดของวัตถุและสคริปต์คลาสสิกที่จำเป็นสำหรับการแสดงหน้าจอโหลดสตอเรจที่ซ้ำกัน | มีวัตถุที่ถูกสําเนาไปยังทั้งไคลเอนต์และเซิร์ฟเวอร์ตำแหน่งนี้เหมาะสำหรับ Class.ModuleScript\|ModuleScripts ที่คุณต้องการใช้ทั้งในเซิร์ฟเวอร์และไคลเอนต์Class.LocalScript\|LocalScripts ไม่ได้หนีออกจากตำแหน่งนี้ แต่ Class.Script\|Scripts ด้วยบริบทการทำงานของ Client ทำServerScriptService | มีสคริปต์เซิร์ฟเวอร์ คอนเทนต์ตำแหน่งนี้เหมาะสำหรับสคริปต์ที่ต้องการเข้าถึงฟังก์ชันหรือวัตถุด้านเซิร์ฟเวอร์ เช่น โลจิสติกเกมและการจัดเก็บของเมฆStorage เซิร์ฟเวอร์ | มีวัตถุด้านเซิร์ฟเวอร์ตำแหน่งนี้เหมาะสำหรับวัตถุขนาดใหญ่ที่ไม่จำเป็นต้องสร้างซ้ำทันทีให้กับลูกค้าเมื่อพวกเขาเข้าร่วมประสบการณ์สคริปต์ไม่ได้รันจากตำแหน่งนี้ แต่คุณสามารถเก็บไว้ที่ด้านเซิร์ฟเวอร์ Class.ModuleScript\|ModuleScripts ที่นี่StarterPlayer.StarterCharacterScripts | มี Class.LocalScript\|LocalScripts ที่เรียกใช้เมื่อตัวละครเกิดStarterPlayer.StarterPlayerScripts | มีสคริปต์ทั่วไป Class.LocalScript\|LocalScripts ที่เรียกใช้เมื่อผู้เล่นเข้าร่วมประสบการณ์StarterGui | มีองค์ประกอบ GUI ที่ลูกค้าแสดงเมื่อโหลดเกมClass.LocalScript\|LocalScripts สามารถวิ่งจากตำแหน่งนี้ได้ตำแหน่งนี้เหมาะสำหรับสคริปต์ที่แก้ไขอินเทอร์เฟซผู้ใช้ของเกม เช่น เพิ่มปุ่ม เมนู และป๊อปอัพแพ็คเริ่มต้น | โดยทั่วไปจะมีเฉพาะ Class.Tool\|Tools เท่านั้น แต่ยังสามารถรวมถึง Class.LocalScript\|LocalScripts สำหรับการตั้งค่ากระเป๋าผู้เล่น

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

Diagram showing which script locations run on clients.

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

โครงการอ้างอิงของ โรงงาน แสดงวิธีที่คุณอาจจัดระเบียบโค้ดของคุณในประสบการณ์ขนาดใหญ่และซับซ้อน

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