Lưu dữ liệu

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

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.

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

  2. Từ trang Trang chủ , mở cửa sổ Cài đặt trò chơi .

  3. Trong phần An toàn , bật Mở Studio Access đến API Services .

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

  1. Tạo một Script mới trong ServerScriptService được gọi là GoldManager .

  2. 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")
  3. 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óaGiá Trị

31250608

50

351675979

20

505306092

78000

Ví dụ quảng cáo

Chìa khóaGiá 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:

  1. 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ệu
    local playerUserID = 505306092
    local playerGold = 250
  2. Để 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ệu
    local playerUserID = 505306092
    local playerGold = 250
    -- Đặt chìa khóa lưu trữ dữ liệu
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(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

  1. Để đọ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 then
    warn(errorMessage)
    end
    -- Đọc khóa dữ chìa khóa
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. Để 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.

Edit in Studio option from the experience's main page