Verilerin Kaydedilmesi

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

  1. Stüdyo'ya erişimi etkinleştirmek için oyununuzun yayınlandığından emin olun (Dosya > Roblox'a Paylaş)

  2. Ana sayfadan Ana Sayfa sekmesinden Oyun Ayarları penceresini açın.

  3. Güvenlik bölümünde, Stüdyo Erişimi API Hizmetlerine Etkinleştir seçeneğini etkinleştirin.

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

  1. GoldManager adında yeni bir Class.Script oluştur.
  1. Veri depoları DataStoreService tarafından yönetilir, bu yüzden ilk satırda hizmeti alın.


    local DataStoreService = game:GetService("DataStoreService")
  2. 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

AnahtarDeğer

31250608

50

351675979

20

505306092

78000

Promo Örnekleri

AnahtarDeğer

Aktif Özel Etkinlik

YazPartisi2

AktifPromoKod

BONUS123

CanAccessPartyPlace

doğru

Oyuncu verilerini veri depolarında kaydetmek için:

  1. 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ğeri
    local playerUserID = 505306092
    local playerGold = 250
  2. Verileri 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ğeri
    local playerUserID = 505306092
    local playerGold = 250
    -- Veri depolama anahtarını ayarla
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(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

  1. 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 then
    warn(errorMessage)
    end
    -- Veri depolarının anahtarını oku
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. Script'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.

Edit in Studio option from the experience's main page