Per molti sviluppatori, la sfida fondamentale di adattarsi allo scripting di Roblox è l'importanza della posizione del file e della ProprietàScript.RunContext.A seconda del inserisci / scrividi script, della posizione nell'esploratore e del contesto di esecuzione, gli script possono comportarsi molto diversamente.Alcune chiamate di metodo potrebbero fallire, gli oggetti nella tua esperienza potrebbero essere inaccessibili o gli script potrebbero non essere eseguiti tutti/tutte.
La ragione di questa complessità è che le esperienze Roblox sono multigiocatore per impostazione predefinita.Gli script hanno bisogno della capacità di essere eseguiti solo sul Server, di essere eseguiti solo sul client o di essere condivisi su entrambi.L'evoluzione della piattaforma Roblox nel tempo ha ulteriormente complicato la situazione.
Tipi di script
Roblox ha tre tipi di script:
- Script - Codice che viene eseguito sul server o sul client, a seconda della sua posizione e della ProprietàScript.RunContext.
- LocalScript - Codice che viene eseguito solo sul client. Non ha un contesto di esecuzione.
- ModuleScript - Codice che puoi riutilizzare in altri script. Non ha un contesto di esecuzione.
Quando crei un Script, il suo contesto di esecuzione predefinito è Legacy , il che significa che a) è uno script lato server e b) funziona solo se è in un contenitore server, come Workspace o ServerScriptService .
- Se cambi il contesto di esecuzione dello script in Server, ora può essere eseguito anche in ReplicatedStorage, ma non è raccomandato.I contenuti di quella posizione vengono replicati ai client, quindi è una posizione pessima per gli script lato server.
- Se cambi il contesto di esecuzione dello script a Client, può essere eseguito in ReplicatedStorage .Può anche essere eseguito in StarterCharacterScripts e StarterPlayerScripts .I container di avvio vengono comunque copiati ai client, quindi viene Eseguirelo script originale e la copia, che non è desiderabile.
Per modificare un contesto di esecuzione di uno script, selezionalo nel Explorer e cambia il valore nella finestra Proprietà.

Raccomandazioni
L'utilizzo di Server e Client valori per RunContext rimuove l'ambiguità dal modo in cui gli script vengono eseguiti e può aiutare a mantenere il progetto organizzato.I migliori casi d'uso per i valori non predefiniti RunContext sono:
- Script del client che vuoi eseguire da ReplicatedStorage o ReplicatedFirst .
Per condividere il codice tra gli script del server e del client, usa ModuleScripts in ReplicatedStorage .
Usa LocalScripts in StarterCharacterScripts , StarterPlayerScripts , StarterGui e StarterPack .
Posizioni degli script
Posizione | Descrizione :--- | :--- Workspace | Rappresenta il Mondodel gioco.Questa posizione funziona bene per gli script del server che si attaccano direttamente agli oggetti e controllano il loro comportamento.ReplicatedFirst | Contiene oggetti che si replicano al client prima di qualsiasi altra cosa.Questa posizione è ideale per il minimo assoluto set di oggetti e script client necessari per visualizzare una schermata di caricamento.ReplicatedStorage | Contiene oggetti che vengono replicati sia al client che al Server.Questa posizione è ideale per Class.ModuleScript\|ModuleScripts che vuoi utilizzare sia sul server che sul client.Class.LocalScript\|LocalScripts non fuggi da questa posizione, ma Class.Script\|Scripts con un contesto di esecuzione di Client fai.ServerScriptService | Contiene gli script del server.Questa posizione è ideale per gli script che devono accedere alla funzionalità lato server o agli oggetti, come la logica di gioco e lo storage cloud.ServerStorage | Contiene oggetti lato server.Questa posizione è ideale per oggetti grandi che non hanno bisogno di essere replicati immediatamente ai client quando si uniscono a un'esperienza.Gli script non vengono eseguiti da questa posizione, ma puoi archiviare il lato server Class.ModuleScript\|ModuleScripts qui.StarterPlayer.StarterCharacterScripts | Contiene Class.LocalScript\|LocalScripts che si eseguono quando il personaggio si genera.StarterPlayer.StarterPlayerScripts | Contiene script di uso generale Class.LocalScript\|LocalScripts che si eseguono quando il giocatore si unisce all'esperienzaStarterGui | Contiene elementi GUI che il client mostra quando carica il Gioco.Class.LocalScript\|LocalScripts può fuggire da questa posizione.Questa posizione è ideale per gli script che modificano l'interfaccia utente del Gioco, come l'aggiunta di pulsanti, menu e popup.StarterPack | Generalmente contiene solo Class.Tool\|Tools, ma può anche includere Class.LocalScript\|LocalScripts per configurare i backpack del giocatore.
Questa immagine mostra in quali posizioni della finestra Explorer possono essere contenuti gli script del client.Ricorda, ReplicatedFirst e ReplicatedStorage possono contenere Scripts con un RunContext di Client , mentre i contenitori Starter[] devono usare LocalScripts .

Struttura del progetto di esempio
Il progetto di riferimento Pianta mostra come potresti organizzare il tuo codice in una grande esperienza complessa.
Di particolare nota è la modalità in cui memorizza la grande maggioranza del suo codice riutilizzabile ModuleScripts in ReplicatedStorage e ServerStorage .