ModuleScript
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
A ModuleScript to typ skryptu, który zwraca dokładnie jedną wartość za pomocą wezwania require() .Wykonaj raz i tylko raz na środowisku Luau i zwróć dokładnie taką samą wartość dla kolejnych wezwań do ..
ModuleScripts są niezbędnymi obiektami do przestrzegania zasady "Nie powtarzaj siebie" (DRY), umożliwiając pisanie funkcji tylko raz i używanie jej wszędzie.Posiadanie wielu kopii funkcji jest problematyczne, gdy musisz zmienić ich zachowanie, więc powinieneś określić funkcje lub grupy funkcji w ModuleScripts i mieć swoje Scripts i LocalScripts wezwanie require() na tych modułach.
Ważne jest, aby wiedzieć, że wartości zwrotne z ModuleScripts są niezależne w odniesieniu do Scripts i LocalScripts oraz innych środowisk, takich jak pasek poleceń .Użycie require() na ModuleScript w LocalScript uruchomi kod na klientzie, nawet jeśli Script zrobił to już na serwerze.Dlatego uważaj, jeśli używasz ModuleScript na klientzie i serwerze jednocześnie lub debugujesz go w Studio.
Zauważ, że pierwsze wezwanie do require() nie wygeneruje (zatrzyma się), chyba że ModuleScript wygeneruje (wezwania task.wait() na przykład), w przeciwnym razie obecny wątek, który wezwał require(), będzie wykonywał do czasu, aż ModuleScript nie zwróci wartość.Jeśli próbuje inna próbuje inna, wątek będzie wisi i nigdy się nie zatrzyma (cykliczne wezwania nie generują błędów).Bądź świadomy zależności modułu w dużych projektach!
Jeśli ModuleScript zostanie przesłane do Roblox, a moduł korzeniowy ma ustawioną nazwę na MainModule, może zostać przesłane jako model i wymagane za pomocą require() z ID zasobu modelu.Następnie można ją załadować do swojego doświadczenia, choć ta logika działa tylko na serwerze i będzie błędna na klientzie.Jeśli inni użytkownicy chcą korzystać z modułu, musi on być publiczne.
Przykłady kodu
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()
Podsumowanie
Właściwości
Kod, który ma zostać wykonany.
Właściwości
Source
Kod, który ma zostać wykonany.
Jeśli chcesz przeczytać lub zmodyfikować skrypt, który użytkownik ma otwarty, rozważ zamiast tego użycie ScriptEditorService do interakcji z edytorem skryptów.