Gry często muszą przechować pewną ilość trwałych danych między sesjami, takimi jak poziom gracza, punkty doświadczenia, przedmioty w ekwipunku, złoto/pieniądze i wiele więcej.
Ten samouczek pokaże ci, jak utworzyć podstawowy magazyn danych , zapisać dane próbowe i przeczytać je z powrotem w sesjagry.
Włączanie dostępu do Studio
Domyślnie gry testowane w Studio nie mogą uzyskać dostępu do magazynów danych, więc najpierw musisz je włączyć.
Upewnij się, że gra jest opublikowana (Plik > Publikuj w Roblox), aby włączyć dostęp do Studio.
Z zakładki Strona główna, otwórz okienko Ustawienia gry.
W sekcji Bezpieczeństwo, włącz Włącz dostęp Studio do usług API.
Kliknij Zapisz , aby zapisać swoje zmiany.
Tworzenie magazynu danych
Magazyny danych są identyfikowane przez unikalne imię . W tym przykładzie, magazyn danych nazyający się PlayerGold zapisze złoto każdego gracza w trwałym magazynie.
Utwórz nowy Script w ServerScriptService zwany GoldManager .
Stoły danych są zarządzane przez DataStoreService, więc dostań usługę na pierwszej linii.
local DataStoreService = game:GetService("DataStoreService")Zadzwoń do DataStoreService:GetDataStore() zgodnie ze zmianą "PlayerGold" . Będzie to uzyskać PlayerGold przechowywanie danych, jeśli istnieje już, lub stworzyć go inaczej.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
Zapisywanie danych
Magazyn danych jest zasadniczo słownikiem, takim jak tabela Lua. Każda wartość w magestrze danych jest zindeksowana przez unikalny klucz, na przykład gracza Class.Player.UserId|userId lub po prostu imienną strungę dla promocji gry.
Przykład danych gracza
Klucz | Wartość |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78000 |
Przykłady promocji
Klucz | Wartość |
---|---|
AktywneSpecjalneWydarzenie | Letnia impreza 2 |
Aktywny Kod Promocyjny | BONUS123 |
Możliwość dostępu do party place | prawdziwy |
Aby zapisać dane gracza w sklepdanych:
Utwórz zmienne nazyjące się playerUserID dla klucza magazynu danych. Następnie użyj playerGold , aby przechować początkową ilość złota gracza.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Klucz i wartość przechowywania danychlocal playerUserID = 505306092local playerGold = 250Aby zapisać dane w PlayerGold danej sklep, wezwij SetAsync w chronionym wezwaniu, przekazując klucz i zmienne wartości poprzednio utworzone.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Klucz i wartość przechowywania danychlocal playerUserID = 505306092local playerGold = 250-- Ustaw klucz do przechowywania danychlocal setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
Funkcje jak SetAsync() są wezwaniami sieciowymi, które czasami mogą się nie powodować. Jak pokazano powyżej, pcall() jest używany do wykrywania i zarządzania, gdy takie niepowodzenia się występować.
W swojej najbardziej podstawowej formie pcall() akceptuje funkcję i zwraca dwa wartości:
- Status ( boolean); będzie to prawdą, jeśli funkcja zostanie wykonana bez błędów lub fałszywie.
- Wartość zwracana funkcji lub wiadomośćbłędu.
W przykładzie powyżej status ( setSuccess ) jest testowany na linii 12 i, jeśli SetAsync() nie powiodło się z jakiejkolwiek przyczyny, errorMessage jest wyświetlany w oknie Wyjścia.
Czytanie danych
Aby czytać dane z sklepdanych, wezwij GetAsync() z dowolnym imieniem klucza.
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- Przeczytaj klucz do magazynu danychlocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endAby przetestować skrypt, kliknij Zacznij i zauważ currentGold wartość wydrukowana do okienka wyjścia. Uwaga, że może to zająć kilka sekund, ponieważ funkcje muszą się połączyć z serwerami przechowywania danych.
Projekt przykładowy
Teraz, gdy rozumiesz podstawowe użycie przechowywania danych, sprawdź to w grapróbnej.
Złota gorąca Zbierz jak najwięcej kawałków złota, aby ustanowić osobisty rekord, który będzie trwać między sesjami gry.
Możesz również edytować grę w Studio i zbadać ulepszony GoldManager skrypt, który zawiera automatyczne zapisywanie danych i wiele innych.