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.
Pastikan game Anda dipublikasikan (File > Publikasi ke Roblox) untuk mengaktifkan akses Studio.
Dari tab Rumah , buka jendela Pengaturan Permainan .
Di bagian Keamanan, aktifkan Akses Studio ke Layanan API.
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.
Buat Script baru di dalam ServerScriptService bernama GoldManager .
Penyimpanan data dioperasikan oleh DataStoreService, jadi dapatkan layanan di baris pertama.
local DataStoreService = game:GetService("DataStoreService")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
Kunci | Nilai |
---|---|
31250608 | 50 |
351675980 | 20 |
505306092 | 78.000 |
Contoh Promo
Kunci | Nilai |
---|---|
Acara Spesial Aktif | Pesta Musim Panas 2 |
Kode Promo Aktif | BONUS123 |
Dapat mengakses tempat pesta | benar |
Untuk menyimpan data pemain di toko data:
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 datalocal playerUserID = 505306092local playerGold = 250Untuk 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 datalocal playerUserID = 505306092local playerGold = 250-- Tetapkan kunci unitdatalocal setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(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
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 thenwarn(errorMessage)end-- Baca kunci unitdatalocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endUntuk 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.