Oyunlar genellikle bir oyuncu'nun seviyesi, deneyim puanları, envanter öğeleri, altın/para ve daha fazlası gibi seanslar arasında biraz persist data depolamaya ihtiyaç duyar.
Bu öğretici, temel bir veri depolama oluşturmayı, örnek veri kaydetmeyi ve verileri bir oyun oturumuna yeniden okumayı gösterecektir.
Studio Erişimini Etkinleştirme
Stüdyo'da oluşturulan oyunlar varsayılan olarak veri depolarına erişemez, bu yüzden önce onları etkinleştirmelisiniz.
Stüdyo'ya erişimi etkinleştirmek için oyununuzun yayınlandığından emin olun (Dosya > Roblox'a Paylaş)
Ana sayfadan Ana Sayfa sekmesinden Oyun Ayarları penceresini açın.
Güvenlik bölümünde, Stüdyo Erişimi API Hizmetlerine Etkinleştir seçeneğini etkinleştirin.
Değişikliklerinizi kaydetmek için Kaydet e tıklayın.
Bir Veri Deposu Oluşturulması
Veri depolarının isimleri benzersizdir. Bu örnekte, PlayerGold adındaki bir veri depoları, her oyuncunun altınını kalıcı depolara kaydetir.
- GoldManager adında yeni bir Class.Script oluştur.
Veri depoları DataStoreService tarafından yönetilir, bu yüzden ilk satırda hizmeti alın.
local DataStoreService = game:GetService("DataStoreService")Class.DataStoreService:GetDataStore() ile çağrılırken, PlayerGold yolunu kullanarak. Bu, mevcutsa PlayerGold veri depolarına erişecek veya onu yoksa yaratacaktır.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
Verileri Kaydetme
Bir veri depolama, aslında bir sözlük gibidir, bir Lua tablosu gibi. Veri depolamasındaki her değer, oyun içi promosyon için oyuncu benzindeki benzersiz bir anahtar ile indekslenir, bir isimli süper metin sadece bir oyun içi promosyon için.
Oyuncu Verileri Örneği
Anahtar | Değer |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78000 |
Promo Örnekleri
Anahtar | Değer |
---|---|
Aktif Özel Etkinlik | YazPartisi2 |
AktifPromoKod | BONUS123 |
CanAccessPartyPlace | doğru |
Oyuncu verilerini veri depolarında kaydetmek için:
Veri depolarının anahtarı için playerUserID adlı bir değişken oluşturun. Sonra, playerGold kullanarak bir oyuncunun başlangıç altın miktarını depolayın.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Veri depolama anahtarı ve değerilocal playerUserID = 505306092local playerGold = 250Verileri PlayerGold veri depolarına kaydetmek için, önce oluşturulan anahtar ve değer çeşitlerini geçen koruma içinde çağrı SetAsync ile, kaydedin.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Veri depolama anahtarı ve değerilocal playerUserID = 505306092local playerGold = 250-- Veri depolama anahtarını ayarlalocal setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
Aşağıdaki gibi işlevler SetAsync() gibi ağ çağrılarıdır. Üstte gösterildiği gibi, pcall() böyle hataları tespit etmek ve işlemek için kullanılır.
En temel formunda, pcall() bir işlev kabul eder ve iki değer döndürür:
- Durum ( boolean); bu, işlevi hata olmadan veya yanlış olarak başlatırsanız doğru olacaktır.
- İşlevin veya bir hata mesajının dönüş değeri.
Aşağıdaki örnekte, durum ( setSuccess ) 12. satırda test edilir ve SetAsync() için herhangi bir nedenle başarısız olduğu durumda, errorMessage Outlook penceresinde görüntülenir.
Verileri Okuyor
Veri mağazaveri okumak için, GetAsync() ile istenen anahtar ismiyle çağırın.
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- Veri depolarının anahtarını okulocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endScript'i test etmek için Run'e tıklayın ve currentGold değerini Çıkış penceresine yazdırın. Notere, bunun birkaç saniye sürebileceğini lütfen unutmayın, çünkü işlevlerin veri depolama sunucusuna bağlanması gerekir.
Örnek Proje
Artık temel veri depolama kullanımını anladığınıza göre, bir örnek oyunda test edin.
Altın Rüzgarı Toplabilir olduğunuz kadar çok altın parçası toplayın kişisel bir rekor ayarlayabilirsiniz ki bu, oyun oturumları arasında sürecek.
Ayrıca Studio'da oyunu düzenleyebilir ve GoldManager kodunu, veri otomatik kaydedilmesi ve daha fazlasını içeren gelişmiş bir senaryoda araştırabilirsiniz.