I giochi di solito devono memorizzare una certa quantità di dati persistenti tra sessioni come il Livellodi un Giocatore, punti di esperienza, oggetti dell'inventario, oro/denaro e altro ancora.
Questo tutorial ti mostrerà come creare un semplice archivio di dati , salvare i dati di esempio e leggere i dati nel tuo gioco.
Abilitare l'accesso a Studio
Per impostazione predefinita, i giochi testati in Studio non possono accedere ai magazzini di dati, quindi devi prima abilitarli.
Assicurati che il tuo gioco sia pubblicato (File > Pubblica su Roblox) per abilitare l'Accessoa Studio.
Dalla Home scheda, apri la finestra Impostazioni di gioco.
Nella sezione Sicurezza, attiva Abilita l'accesso a Studio ai servizi API.
Click Salva to register your changes.
Creazione di un Data Store
I magazzini di dati sono identificati da un unico nome . In questo esempio, un magazzino di dati chiamato PlayerGold salverà l'oro di ciascun Giocatorein uno storage persistente.
Crea un nuovo Script dentro ServerScriptService chiamato GoldManager .
I magazzini di dati sono gestiti da DataStoreService, quindi ottieni il servizio sulla prima riga.
local DataStoreService = game:GetService("DataStoreService")Chiama DataStoreService:GetDataStore() con la stringa "PlayerGold" . Questo accedereà il PlayerGold data store se esiste già, o crearlo in altro modo.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
Salvataggio dei dati
Un archivio di dati è essenzialmente un dizionario, come una tabella Lua. Ogni valore nell'archivio di dati è indizzato da una chiave unica key , ad esempio il Giocatoreunico UserId o semplicemente una stringa di nome per una promo di gioco.
Esempio di dati del giocatore
Chiave | Valore |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78000 |
Esempi di promo
Chiave | Valore |
---|---|
Evento speciale attivo | Festa estiva 2 |
Codice promozionale attivo | BONUS123 |
Può accedere al party place | vero |
Per salvare i dati del giocatore nel data Negozio:
Crea una variabile chiamata playerUserID per il chiavedi archiviazione dei dati. Quindi, usa playerGold per archiviare la quantità iniziale d'oro di un Giocatore.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Chiave e valore del magazzino dei datilocal playerUserID = 505306092local playerGold = 250Per salvare i dati nel PlayerGold data Negozio, call SetAsync within a protected call, passando le variabili chiave e valore precedentemente create.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Chiave e valore del magazzino dei datilocal playerUserID = 505306092local playerGold = 250-- Imposta il valore della chiave del datastorelocal setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
Le funzioni come SetAsync() sono chiamate di rete che possono occasionalmente fallire. Come mostrato sopra, pcall() viene utilizzato per rilevare e gestire quando si Si verificanotali errori.
Nella sua forma più semplice, pcall() accetta una funzione e restituisce due valori:
- Lo stato ( boolean); questo sarà vero se la funzione viene eseguita senza errori, o falsa altrimenti.
- Il valore di restituzione della funzione o un Messaggiodi errore.
Nell'esempio sopra, lo stato ( setSuccess ) viene testato sulla linea 12 e, se SetAsync() non ha funzionato per qualsiasi motivo, errorMessage viene visualizzato nella finestra di uscita.
Leggere i dati
Per leggere i dati da un data Negozio, chiama GetAsync() con il nome della chiave desiderata.
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- Leggi il valore della chiave del magazzino di datilocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endPer testare lo script, fai clic su Esegui e nota il valore currentGold stampato nella finestra Uscita . Nota che potrebbe richiedere alcuni secondi, poiché le funzioni devono connettersi ai server di archiviazione dei dati.
Progetto di esempio
Ora che capisci l'utilizzo di base del magazzino di dati, mettilo alla prova in un Giocodi esempio.
Corsaro d'oro Raccogli il maggior numero possibile di pezzi d'oro per stabilire un record personale che persiste tra le sessioni di gioco.
Puoi anche modificare il gioco in Studio e esplorare lo script GoldManager potenziato che include la salvataggio automatico dei dati e altro ancora.