Trò chơi thường cần lưu một số dữ liệu persist giữa các phiên như cấp độ của một người chơi, điểm kinh nghiệm, mục đồ, vàng/tiền và nhiều hơn nữa.
Hướng dẫn này sẽ cho bạn thấy cách tạo một cơ sở dữ liệu cơ bản , lưu dữ liệu mẫu và đọc dữ liệu trở lại vào một phiên chơi.
Mở Studio Access
Bởi mặc định, các trò chơi được thử nghiệm trong Studio không thể truy cập các cửa hàng dữ liệu, vì vậy bạn phải bật chúng trước.
Hãy đảm bảo trò chơi của bạn đã được xuất bản (File > Xuất bản tới Roblox) để bật Studio truy cập.
Từ trang Trang chủ , mở cửa sổ Cài đặt trò chơi .
Trong phần An toàn , bật Mở Studio Access đến API Services .
Nhấp vào Lưu để đăng nhập các thay đổi của bạn.
Tạo một Data Store
Các cửa hàng dữ liệu được xác định bởi một cái tên độc đáo PlayerGold . Trong ví dụ này, một cửa hàng dữ liệu có tên PlayerGold sẽ lưu mọi vàng của mỗi người chơi vào lưu trữ.
Tạo một Script mới trong ServerScriptService được gọi là GoldManager .
Các cửa hàng dữ liệu được quản lý bởi DataStoreService, vì vậy lấy dịch vụ ở dòng đầu tiên.
local DataStoreService = game:GetService("DataStoreService")Gọi DataStoreService:GetDataStore() với dòng chuỗi "PlayerGold" . Điều này sẽ truy cập vào PlayerGold dữ liệu nếu nó đã tồn tại, hoặc tạo nó nếu không.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
Lưu dữ liệu
Một cửa hàng dữ liệu là thực sự một bảng từ điển, giống như một cái Lua table. Mỗi giá trị trong cửa hàng dữ liệu được xếp chỉ bởi một chìa khóa độc đáo, ví dụ như Class.Player.UserId|userId của người chơi hoặc chỉ là một dòng chữ cho một quảng cáo trò
Ví dụ dữ liệu người chơi
Chìa khóa | Giá Trị |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78000 |
Ví dụ quảng cáo
Chìa khóa | Giá Trị |
---|---|
Sự kiện đặc biệt | Nhóm Hè 2 |
Mã quà tặng đang hoạt động | Thưởng123 |
Có thể truy cập PartyPlace | đúng |
Để lưu dữ liệu người chơi vào cơ sở dữ cửa hàng:
Tạo một biến tên là playerUserID cho chìa khóa lưu trữ dữ liệu. Sau đó, sử dụng playerGold để lưu số lượng vàng xuất phát của một người chơi.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Chìa khóa và giá trị của cửa hàng dữ liệulocal playerUserID = 505306092local playerGold = 250Để lưu dữ liệu vào PlayerGold dữ liệu cửa hàng, gọi SetAsync trong một cuộc gọi được bảo vệ, truyền các biến chìa khóa và giá trị trước đó đã tạo ra.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- Chìa khóa và giá trị của cửa hàng dữ liệulocal playerUserID = 505306092local playerGold = 250-- Đặt chìa khóa lưu trữ dữ liệulocal setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
Các chức năng như SetAsync() là gọi mạng mà thỉnh thoảng có thể thất bại. Như được hiển thị trên trên, pcall() được sử dụng để phát hiện và xử lý khi những lỗi này xảy ra.
Trong dạng cơ bản nhất của nó, pcall() chấp nhận một hàm và trả lại hai giá trị:
- Tình trạng ( boolean); điều này sẽ đúng nếu chức năng được thi hành mà không có lỗi hoặc sai.
- Giá trị trả về của hàm hoặc một thông tin nhắnlỗi.
Trong ví dụ trên, trạng thái ( setSuccess ) được kiểm tra ở dòng 12 và, nếu SetAsync() bị lỗi vì bất kỳ lý do nào, errorMessage được hiển thị trong cửa sổ Thoát.
Đọc dữ liệu
Để đọc dữ liệu từ một cửa hàng dữ liệu, gọi GetAsync() với tên chìa khóa tùy chỉnh.
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- Đọc khóa dữ chìa khóalocal getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)endĐể kiểm tra script, hãy nhấp vào Chạy và nhận thấy giá trị currentGold được in ra cửa sổ Thoát. Lưu ý rằng nó có thể mất một vài giây, vì các hàm phải kết nối với máy chủ lưu trữ dữ liệu.
Dự án Ví dụ
Bây giờ bạn hiểu cách sử dụng cơ bản của cửa hàng dữ liệu, hãy thử nó trong một trò chơi mẫu.
Vàng Rush Thu thập nhiều khối vàng nhất bạn có thể để lập một kỷ lục cá nhân sẽ tồn tại giữa các phiên chơi.
Bạn cũng có thể chỉnh sửa trò chơi trong Studio và khám phá GoldManager script được cải tiến có chứa dữ liệu tự động lưu và nhiều hơn.