Menyimpan Data

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Game sering perlu menyimpan beberapa jumlah 数据持久 di antara sesi seperti levelpemain, poin pengalaman, item inventaris, emas/uang, dan banyak lagi.

Tutorial ini akan menunjukkan cara membuat toko data dasar , menyimpan data sampel, dan membaca data kembali ke sesi permainan.

Mengaktifkan Akses ke Studio

Secara default, game yang diuji di Studio tidak dapat mengakses toko data, jadi Anda harus terlebih dahulu mengaktifkannya.

  1. Pastikan game Anda dipublikasikan (File > Publikasi ke Roblox) untuk mengaktifkan akses Studio.

  2. Dari tab Rumah , buka jendela Pengaturan Permainan .

  3. Di bagian Keamanan, aktifkan Akses Studio ke Layanan API.

  4. Klik Simpan untuk mendaftarkan perubahan Anda.

Menciptakan Toko Data

Penyimpanan data diidentifikasi oleh nama unik . Dalam contoh ini, penyimpanan data bernama PlayerGold akan menyimpan emas setiap pemain ke penyimpanan yang bertahan.

  1. Buat Script baru di dalam ServerScriptService bernama GoldManager .

  2. Penyimpanan data dioperasikan oleh DataStoreService, jadi dapatkan layanan di baris pertama.


    local DataStoreService = game:GetService("DataStoreService")
  3. Panggil DataStoreService:GetDataStore() dengan string "PlayerGold" . Ini akan mengakses PlayerGold data store jika sudah ada, atau ciptakan itu dengan cara lain.


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")

Menyimpan Data

Sebuah toko data pada dasarnya adalah kamus, seperti tabel Lua. Setiap nilai di toko data diindeks oleh kunci unik , misalnya Class.pemain.UserId|userId atau hanya sebuah string yang bernama untuk promo game.

Contoh Data Pemain

KunciNilai

31250608

50

351675980

20

505306092

78.000

Contoh Promo

KunciNilai

Acara Spesial Aktif

Pesta Musim Panas 2

Kode Promo Aktif

BONUS123

Dapat mengakses tempat pesta

benar

Untuk menyimpan data pemain di toko data:

  1. Buat variabel bernama playerUserID untuk kunci penyimpanan data. Kemudian, gunakan playerGold untuk menyimpan jumlah emas awal pemain.


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- Kunci dan nilai penyimpanan data
    local playerUserID = 505306092
    local playerGold = 250
  2. Untuk menyimpan data ke dalam PlayerGold penyimpanan data, panggil SetAsync dalam panggilan terlindung, dengan menyebutkan variabel kunci dan nilai sebelumnya yang telah dibuat.


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- Kunci dan nilai penyimpanan data
    local playerUserID = 505306092
    local playerGold = 250
    -- Tetapkan kunci unitdata
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end

Fungsi seperti SetAsync() adalah panggilan jaringan yang kadang-kadang dapat gagal. Seperti yang ditunjukkan di atas, pcall() digunakan untuk mendeteksi dan menangani ketika kesalahan seperti itu terjadi.

Dalam bentuk paling dasarnya, pcall() menerima fungsi dan mengembalikan dua nilai:

  • Status ( boolean); ini akan benar jika fungsi dijalankan tanpa kesalahan, atau false jika tidak.
  • Nilai kembali dari fungsi atau pesan kesalahan.

Dalam sampel di atas, status ( setSuccess ) diuji di baris 12 dan, jika SetAsync() gagal untuk alasan apa pun, errorMessage ditampilkan di jendela Keluaran.

Membaca Data

  1. Untuk membaca data dari penyimpanan data, panggil GetAsync() dengan nama kunci yang diinginkan.


    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end
    -- Baca kunci unitdata
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. Untuk menguji skrip, klik Jalankan dan perhatikan nilai currentGold yang dicetak ke jendela Output. Perhatikan bahwa mungkin membutuhkan beberapa detik, karena fungsi harus terhubung ke server penyimpanan data.

Proyek Sampl

Sekarang setelah Anda memahami penggunaan penyimpanan data dasar, tesnya di game sampel.

Emas Rush Kumpulkan sebanyak mungkin emas untuk menetapkan rekor pribadi yang akan bertahan di antara sesi permainan.

Anda juga dapat mengedit game di Studio dan menjelajahi GoldManager script yang ditingkatkan yang termasuk otomatis menyimpan data dan banyak lagi.

Edit in Studio option from the experience's main page