Iedereen wilde gegevens opslaan en ze opnieuw laden elke keer dat een speler het spel opnieuw betreedt? Sinds Data Persistence zinloos is geworden, introduceert ROBLOX datastores die veel beter functioneren. Met de volgende handleiding kunt u werken met datastores voor ROBLOX.
Stappen
Methode 1 van 3: De gegevensopslag instellen
Stap 1. Configureer de API
Dit vereist geen scripting, maar om alle API's voor gegevensopslag te activeren, moet u eerst de API-toegang inschakelen. Ga hiervoor naar het tabblad Ontwikkelen en klik op "Games". Dit zou je naar alle huidige spelplaatsen moeten leiden die je bezit. Zoek je spel en klik op het tandwiel. Er zou een vervolgkeuzemenu moeten verschijnen en druk eenvoudig op "Configureren". Vink het vakje "Enable Studio Access to API Services" aan en sla op. U zou nu toegang moeten hebben tot de volledige API.
Stap 2. Haal het gegevensarchief op
Gebruik de Data Store API om de datastore aan te roepen, aangezien we ernaar moeten verwijzen. Open om te beginnen een script op ROBLOX en noem een variabele die we willen gebruiken om de referentie op te roepen.
local datastore = game:GetService("DataStoreService"):GetDataStore("name")
Stap 3. Gebruik de variabele indien nodig
U hebt de datastore met succes aangeroepen met de variabele "datastore". Nu, wanneer u de datastore moet ophalen, kunt u deze eenvoudig een naam geven met zijn variabele.
Houd er rekening mee dat als er nog geen gegevensopslag is gemaakt, deze automatisch een nieuwe zal maken
Methode 2 van 3: Gegevensopslagmethoden gebruiken
Stap 1. GetAsync
Gebruik GetAsync om de waarde van het item in het gegevensarchief met de opgegeven sleutel te retourneren. Zorg ervoor dat je elke speler een unieke set sleutels geeft, want als je twee spelers dezelfde sleutel geeft, worden hun eigen in-game gegevens overschreven, waardoor chaos tussen de twee partijen ontstaat. Wil je weten hoe je een unieke sleutel instelt, lees dan verder.
- De volgende code zal nul opleveren, omdat de server geen waarde kon vinden die naar de sleutel linkt; het is belangrijk om de server precies te laten zien wat we proberen uit te voeren, zodat de server weet wat er moet worden weergegeven.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:GetAsync(key) end)
Stap 2. StelAsync in
Gebruik SetAsync om de waarde van de sleutel in te stellen en overschrijft alle bestaande gegevens die zijn opgeslagen voor de unieke sleutel.
- Als de vorige set informatie belangrijk is, overweeg dan om UpdateAsync te gebruiken, wat hieronder wordt uitgelegd.
- De volgende code laat zien hoe u zowel de ":GetAsync()"- als de ":SetAsync()"-methoden implementeert.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:SetAsync(key, 90) - - stelt de sleutel in op de waarde, 90 lokale data_stored = datastore:GetAsync(key) -- kan de waardeverandering detecteren print (data_stored) -- drukt het uitvoereinde af)
Stap 3. Gebruik UpdateAsync om de waarde van de sleutel te retourneren en deze bij te werken met een nieuwe waarde
Dit valideert gegevens en moet daarom wachten tot de server de tijd kan vinden om deze bij te werken. Om dit te laten werken, moet u twee parameters doorgeven; de eerste is een string die de unieke sleutel nodig heeft die je hebt ingesteld: "'user_'.. player.userId", en de tweede is een functie die de oude waarde overneemt.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old)) -- doe dingen einde) einde)
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old)) lokaal nieuw = oud of 0 -- zou nul kunnen zijn nieuw = nieuw + 1 -- voeg 1 toe aan de oude waarde return new -- retourneert deze met de nieuwe waarde end) end)
Stap 4. Gebruik IncrementAsync om de waarde voor een sleutel te verhogen en retourneert de verhoogde waarde
Deze methode werkt alleen op gehele getallen.
Methode 3 van 3: Gegevensopslaggebeurtenissen en gegevens bijwerken
Stap 1. Stel een unieke sleutel in
Het is uiterst belangrijk dat elke speler een sleutel heeft die uniek is voor hem. Ze houden die sleutel vast, waarin al hun gegevens worden opgeslagen. Hiervoor gebruiken we de spelers-ID. Nadat u de gegevensopslag hebt ingesteld, roept u gewoon een functie aan om de speler te laden en zoekt u vervolgens de ID van de speler. De code moet er als volgt uitzien:
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId end)
Stap 2. Werk de gegevens bij
Nu je voor elke speler een unieke sleutel hebt, ben je klaar om de gegevensopslag te updaten en gegevens op te halen. Onder uw sleutel wilt u een methode toevoegen die het meest geschikt is voor uw behoeften. In dit geval gebruiken we "UpdateAsync".
- Begin met een functie om de server te helpen begrijpen wat u van plan bent te doen.
local datastore = game:GetService("DataStoreService"):GetDataStore("name") game. Players. PlayerAdded:connect(function(player) local key = "user_".. player.userId datastore:UpdateAsync(key, function(old)) local newValue = old of 0 -- kan nul zijn newValue = newValue + 50 return newValue end) end)
Stap 3. Gefeliciteerd
Je hebt met succes de gegevens van een speler opgeslagen en bijgewerkt.
Waarschuwingen
- Zorg er bij het maken van uw gegevensopslag voor dat u "game:GetService("DataStoreService")" met het juiste hoofdlettergebruik gebruikt. Het zal niet efficiënt werken als het verkeerd wordt aangeroepen.
- Zorg ervoor dat u weet wanneer u "SetAsync" en "UpdateAsync" moet gebruiken, omdat het gebruik van de verkeerde kan leiden tot een rommeltje bij het ophalen van gegevens. In de meeste gevallen zullen ontwikkelaars "UpdateAsync" gebruiken.