ModuleScript

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Un A ModuleScript est un type de script qui renvoie exactement une valeur par un appel à require() .Exécutez une fois et une seule fois par environnement Luau et retournez la même valeur exacte pour les appels suivants à .

ModuleScripts sont des objets essentiels pour adhérer au principe « Ne vous répétez pas vous-même » (DRY), vous permettant d'écrire une fonction une seule fois et de l'utiliser partout.Avoir plusieurs copies d'une fonction est problématique lorsque vous devez modifier leur comportement, vous devez donc définir des fonctions ou des groupes de fonctions dans et avoir vos appels et sur ces modules.

Il est important de savoir que les valeurs de retour de ModuleScripts sont indépendantes par rapport à Scripts et LocalScripts , et d'autres environnements comme la barre de commande Command Bar .L'utilisation de require() sur un ModuleScript dans un LocalScript exécutera le code sur le client, même si un Script l'a déjà fait sur le serveur.Gardez donc la prudence si vous utilisez un ModuleScript sur le client et le serveur en même temps, ou le déboguez dans Studio.

Notez que le premier appel à require() ne produira pas (halte) à moins que ModuleScript ne produise (appelle task.wait() par exemple), dans lequel cas le thread actuel qui a appelé require() produira jusqu'à ce que ModuleScript retourne une valeur.Si un ModuleScript essaie de require() un autre ModuleScript qui à son tour essaie de require() il, le thread s'arrêtera et ne s'arrêtera jamais **** (les appels cycliques require() ne génèrent pas d'erreurs).Faites attention aux dépendances de votre module dans de grands projets !

Si un ModuleScript est téléchargé sur Roblox et que le module racine a le nom défini sur MainModule , il peut être téléchargé en tant que modèle et être requis en utilisant require() avec l'ID de ressource du modèlisation.Il peut ensuite être chargé dans votre expérience, bien que cette logique ne fonctionne que sur le serveur et génère une erreur sur le client.Si d'autres utilisateurs veulent utiliser le module, il doit être public/publique.

Échantillons de code

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.

Simple ModuleScript Example

-- 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.

Simple ModuleScript Usage

-- 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()

Propriétés

Source

Lecture parallèle
Sécurité des plugins
Sécurité OpenCloud

Le code à exécuter.

Si vous souhaitez lire ou modifier un script que l'utilisateur a ouvert, envisagez d'utiliser le ScriptEditorService pour interagir avec l'éditeur de scripts à la place.

Méthodes

Évènements