ModuleScript
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
A ModuleScript เป็นประเภทสคริปต์ที่ส่งคืนค่าเดียวโดยการเรียก Global.LuaGlobals.require()``Class.ModuleScript|ModuleScripts ทำงานเพียงครั้งเดียวต่อสภาพแวดล้อม Luau และส่งค่าเดียวกันสำหรับการโทรต่อไปที่ require()
ModuleScripts เป็นวัตถุที่จำเป็นสำหรับการปฏิบัติตามหลักการ "อย่าทำซ้ำตัวเอง" (DRY) ทำให้คุณสามารถเขียนฟังก์ชันเพียงครั้งเดียวและใช้งานได้ทุกที่การมีสำเนาหลายตัวของฟังก์ชันเป็นปัญหาเมื่อต้องเปลี่ยนพฤติกรรมของพวกเขาดังนั้นคุณควรกำหนดฟังก์ชันหรือกลุ่มฟังก์ชันใน และมีการเรียก และ ในโมดูลเหล่านั้น
เป็นสิ่งสำคัญที่ต้องรู้ว่าค่าการ返回จาก ModuleScripts จะเป็นอิสระต่อ Scripts และ LocalScripts และสภาพแวดล้อมอื่นๆ เช่น แถบคำสั่งการใช้ require() บน ModuleScript ใน LocalScript จะรันโค้ดบนไคลเอนต์แม้ว่า Script จะทำเช่นนั้นแล้วบนเซิร์ฟเวอร์ดังนั้นโปรดระวังหากคุณกำลังใช้ ModuleScript บนไคลเอนต์และเซิร์ฟเวอร์ในเวลาเดียวกันหรือกำลังแก้ไขภายใน Studio
โปรดทราบว่าการโทรครั้งแรกไปที่ require() จะไม่ให้ผล (หยุด) เว้นแต่ว่า ModuleScript จะให้ผล (เรียก task.wait() ตัวอย่างเช่น) ในกรณีนี้กระทู้ปัจจุบันที่เรียก require() จะให้ผลจนกว่า ModuleScript จะกลับมาเป็นค่าหาก กําลังพยายาม อีก ที่ในทางกลับกันพยายาม มันจะ แขวนและไม่หยุดเลย (การโทรจังหวะทางไซเคิลไม่สร้างข้อผิดพลาด)ตรวจสอบการพึ่งพาโมดูลของคุณในโครงการขนาดใหญ่!
หาก ModuleScript ถูกอัปโหลดไปยัง Roblox และโมดูลรากมีชื่อตั้งค่าเป็น MainModule ก็สามารถอัปโหลดเป็นโมเดลและต้องใช้ require() ด้วย ID สินทรัพย์ของโมเดลจากนั้นสามารถโหลดลงในประสบการณ์ของคุณได้ แม้ว่าโลจิกจะทำงานได้เฉพาะในเซิร์ฟเวอร์และจะเกิดข้อผิดพลาดในไคลเอนต์หากผู้ใช้รายอื่นต้องการใช้โมดูล จะต้องเป็นสาธารณะ
ตัวอย่างโค้ด
The code sample starts by creating a local variable holding an empty table. It then fills the table with two placeholder functions, and then finally returns the table. Using this code in a ModuleScript would make the my_functions table (and thus any functions, tables or other values within it) available to any Script, LocalScript or other ModuleScript.
-- Tables store multiple values in one variable
local MyFunctions = {}
-- Add a few functions to the table
function MyFunctions.foo()
print("Foo!")
end
function MyFunctions.bar()
print("Bar!")
end
-- ModuleScripts must return exactly one value
return MyFunctions
This code sample shows how to use the require function on a ModuleScript, then use the value that it returned. See the "Simple ModuleScript Example" for the code to go with this sample.
-- The require function is provided a ModuleScript, then runs
-- the code, waiting until it returns a singular value.
local MyFunctions = require(script.Parent.MyFunctions)
-- These are some dummy functions defined in another code sample
MyFunctions.foo()
MyFunctions.bar()
สรุป
คุณสมบัติ
รหัสที่จะถูกดำเนินการ
คุณสมบัติ
Source
รหัสที่จะถูกดำเนินการ
หากคุณต้องการอ่านหรือแก้ไขสคริปต์ที่ผู้ใช้เปิดอยู่ พิจารณาใช้ ScriptEditorService เพื่อโต้ตอบกับเครื่องมือแก้ไขสคริปต์แทน