Introduzione agli script del modulo

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Mentre i progetti diventano complessi, diventa importante pensare a come gli script sono organizzati.Le buone pratiche di organizzazione possono garantire che il codice non venga duplicato tra gli script o diventi difficile da Gestire.

Un modo migliore per organizzare e riutilizzare il codice è con script di modulo , un tipo di script unico che memorizza un insieme di funzioni e variabili progettate per soddisfare uno scopo condiviso, come la gestione del denaro del giocatore o dei nemici.Il codice all'interno degli script del modulo può essere utilizzato da altri script.In questo modo, puoi chiamare la stessa funzione che dà monete da più script diversi ogni volta che un giocatore termina una missione o trova un pickup.

Memorando il codice comunemente utilizzato negli script del modulo, rende più facile mantenere e organizzare il codice poiché le modifiche devono essere apportate solo a uno script del modulo, piuttosto che aggiornare più script.

Base dello script del modulo

Gli script del modulo sono in realtà un oggetto separato rispetto agli oggetti di script.In Roblox, gli script del modulo possono essere indicati con un'Iconaviola porpora .

Crea uno script del modulo

ModuleScripts sono comunemente posizionati in ServerScriptService quando utilizzati da script lato server e ReplicatedStorage quando utilizzati da script locali lato client (come interazioni GUI).

  1. Crea un ModuleScript in ServerScriptService .

Struttura degli script del modulo

Quando viene creato, ogni script del modulo inizia con il codice seguente:


local Module = {}
return Module

La linea local Module = {} crea una tabella o un contenitore di codice in cui possono essere memorizzate le funzioni e le variabili condivise del modulo.Questa tabella dovrebbe essere rinominata per lo scopo del modulo, come RewardManager o ParticleController .A differenza di altre variabili che sono in maiuscolo ( myVariable ), le tabelle dei moduli sono raccomandate di utilizzare il caso pascal e iniziare con la maiuscola ( MyModule ).


local RewardManager = {}
return RewardManager

Quindi altri script possono utilizzare le funzioni o le variabili non locali di un modulo, ogni modulo termina con return MyModule .Ogni volta che un altro script tenta di ottenere il codice dal modulo, restituisce il codice di accesso dello script memorizzato all'interno della tabella del modulo.

Aggiungi agli script del modulo

Per aggiungere una funzione o una variabile al modulo che può essere utilizzata in un altro script, digita il nome del tabella del modulo, seguito da un punto e dal nome della funzione o della variabile, come in TestModule.myVariable .L'uso dell'operatore punto è un altro modo per aggiungere codice in una tabella, consentendo ad altri script di accedere a quel codice ogni volta che viene restituito il modulo della tabella.


local TestModule = {}
-- Aggiunge una variabile alla tabella 'TestModule'
TestModule.myVariable = 100
-- Aggiunge una funzione alla tabella 'TestModule'
function TestModule.doTask(player)
-- codicesegnaposto
end
return TestModule

Scope negli script del modulo

Per una funzione o variabile del modulo da utilizzare in uno script esterno, non digitare local .

Digitare local di fronte alle variabili e alle funzioni significa che sono utilizzabili solo da quel script.Mentre questa è una buona pratica per la maggior parte degli script per ridurre gli errori e risolvere i problemi, non puoi rendere le funzioni e le variabili dello script del modulo locali.

Qualsiasi codice utilizzato solo da quel script del modulo dovrebbe ancora includere local .Ad esempio, il codice seguente include la variabile locale difficultyModifier , che può essere utilizzata solo nella script del modulo e la funzione getCoinReward() , che può essere utilizzata negli script al di fuori del modulo.


local RewardManager = {}
-- Utilizzabile solo nello script del modulo
local rewardCoins = 50
-- Utilizzabile solo nello script del modulo
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Utilizzabile in altri script
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager

Usa moduli in altri script

Di per sé, uno script del modulo non può eseguire il codice - deve essere caricato in un altro script utilizzando la parola chiave require() .La funzione require() accetta un argomento, la posizione dello script del modulo nell'esploratore.

Per utilizzare un modulo, in uno script separato, imposta una variabile uguale a require(moduleScript) .


local MyModule = require(ServerStorage.ModuleScript)

Ora, la variabile MyModule contiene la tabella del modulo creata in quel script del modulo.Per utilizzare le funzioni e le variabili da quella tabella, digita il nome della variabile, seguito da un punto e l'esatto nome di ciò che utilizzare in quel script del modulo, come MyModule.myFunction() .Quando lo script viene eseguito e raggiunge quella linea, accederà a quella funzione o variabile specifica memorizzata nella tabella del modulo.


local MyModule = require(ServerStorage.ModuleScript)
MyModule.myFunction()

Esempio di RewardManager

ModuleScript - Manager delle ricompense

local RewardManager = {}
-- Utilizzabile solo nello script del modulo
local rewardCoins = 50
-- Utilizzabile solo nello script del modulo
local difficultyModifier = {
easy = 0.5,
normal = 1,
hard = 2
}
-- Utilizzabile in altri script
function RewardManager.getCoinReward(difficulty)
local coins = difficultyModifier[difficulty] * rewardCoins
return coins
end
return RewardManager
Script - TreasureChestScript

local ServerStorage = game:GetService("ServerStorage")
-- Carica lo script del modulo
local RewardManager = require(ServerStorage.RewardManager)
--Chiama la funzione dal script del modulo
local coins = RewardManager.getCoinReward("easy")
print("Should award " .. coins .. " coins")

Soluzione generale dei problemi

Alcuni dei suggerimenti qui riportati affrontano problemi comuni quando si lavora con gli script del modulo.Tieni presente che gli script del modulo possono essere un argomento complicato con più sfumature.Per maggiori dettagli, vedi questa guida più tecnica su Script del modulo. Problema: Ottieni un messaggio di errore che include: "Infinite yield possible" o "not a valid member" .

  • Controlla la punteggiatura dello script del modulo dove viene caricato.require() deve includere il percorso e la spelling esatti dello script del modulo, che può essere nominato in modo diverso dal tabella del modulo. Problema: Ottieni un messaggio di errore che include: "attempt to index global" .

  • In tutti gli script che utilizzano uno script del modulo, assicurati che venga caricato utilizzando la funzione require() .Altrimenti, quello script non può utilizzare funzioni e variabili dal script del modulo.

Sommariamente

Script del modulo in Roblox sono un metodo che i programmatori utilizzano per organizzare e riutilizzare il codice.Un script del modulo viene spesso memorizzato in ServerStorage (o ReplicatedStorage per interazioni client-based).Da lì, altri script sono in grado di chiamare funzioni e variabili memorizzate nello script del modulo.

Ad esempio, un gioco può assegnare punti ai giocatori per la raccolta di oggetti.Un script del modulo può gestire il codice per dare punti.Quindi, gli script per diversi tipi di oggetti possono semplicemente chiamare la funzione script del modulo.Questo riduce la necessità di riutilizzare il codice tra gli script, rendendo il codice più facile da comprendere e mantenere.