Tipi di script e luoghi

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

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

RunContext property indicated for a Script.

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 .
    • Script del server o del client che includi all'interno di modelli e pacchetti.Impostare esplicitamente il contesto di esecuzione rende i modelli e i pacchetti più probabili a funzionare correttamente da una varietà di luoghi.
  • 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 .

Diagram showing which script locations run on clients.

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 .