儲存資料

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

遊戲通常需要在玩家的等級、經驗點、庫存項目、金幣/現金等之間儲存一些 持久資料

此教學將向您展示如何創建基本 資料存儲 、儲存樣本資料,並在遊戲會作業中回閱資料。

啟用工作室存取

由預設情況下,在 Studio 測試的遊戲無法存取資料儲存,因此您必須先啟用它們。

  1. 確認您的遊戲是 已發行 (File > 發布到 Roblox) 才能啟用 Studio 存使用權 通行權 存取。

  2. 首頁 標籤開啟 遊戲設定 窗口。

  3. 安全 部分中,切換 啟用 Studio 存取 API 服務

  4. 按一下 儲存 以註冊您的變更。

創建資料存取

資料儲存會由 特殊名稱 來識別。這個範例中,名為 PlayerGold 的資料儲存會儲存每個玩家的黃金。

  1. 在 Class.ServerScriptService 裡,創建一個名為 ServerScriptService 的新 Class.Script

  2. 資料儲存由 DataStoreService 管理,所以在第一行取得服務。


    local DataStoreService = game:GetService("DataStoreService")
  3. 使用 DataStoreService:GetDataStore()"PlayerGold" 字串。這會存取 PlayerGold 資料存檔,如果它已存在,或在創建它。


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

儲存資料

資料存取庫是基本上像 Lua 桌子一樣的字典。 每個資料存取庫的值都由獨特的 鑰匙 索引,例如玩家的獨特 UserId 或只是遊戲促銷的名稱串。

玩家資料範例

鑰匙價值

31250608

50

351675979

20

505306092

78000

促銷範例

鑰匙價值

特殊活動

夏季派對 2

促銷代碼

獎勵123

可以存取派對地方

真的

要將玩家資料儲存在資料存取中商店 商家:

  1. 為數據存取鑰鍵創建變量 playerUserID。然後使用 playerGold 存儲玩家的起始黃金數量。


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- 數據存取鑰匙和值
    local playerUserID = 505306092
    local playerGold = 250
  2. 要將資料儲存到 PlayerGold 資料存商店 商家中,請在受保護的呼叫中, SetAsync 內,傳送鑰匙和值變量。


    local DataStoreService = game:GetService("DataStoreService")
    local goldStore = DataStoreService:GetDataStore("PlayerGold")
    -- 數據存取鑰匙和值
    local playerUserID = 505306092
    local playerGold = 250
    -- 設定資料存取鑰鍵
    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end

像 Class.GlobalDataStore:SetAsync()|SetAsync() 這樣的函數是網路呼叫,可能會時間不時發生失敗。顯示上方的圖示, Global.LuaGlobals.pcall() 用於偵測並處理此類故障。

在最基本的形式中,pcall() 接受一個函數,並且返回兩個值:

  • 狀態 (boolean); 此狀態將在執行無錯誤的功能時是真的,或者在執行錯誤的時候會是假的。
  • 功能或錯誤訊息的返回值。

在上面的範例中,狀態 (setSuccess ) 在第 12 行中測試,如果 SetAsync() 因任何原因失敗,errorMessage 將在輸出窗口中顯示。

閱取資料

  1. 要從資料商店 商家取中閱取資料,請使用 GetAsync() 並且使用指定的鑰匙名稱。


    local setSuccess, errorMessage = pcall(function()
    goldStore:SetAsync(playerUserID, playerGold)
    end)
    if not setSuccess then
    warn(errorMessage)
    end
    -- 閱讀資料存取鑰鍵
    local getSuccess, currentGold = pcall(function()
    return goldStore:GetAsync(playerUserID)
    end)
    if getSuccess then
    print(currentGold)
    end
  2. 要測試此腳指令碼,請按一下 執行 並注意 currentGold 值已列印到 輸出 窗口。注意,這可能需要幾秒鐘,因為功能必須連接到資料存取服務器。

示例項目

現在您了解基本資料儲存使用方法,請在示例遊戲中測試。

黃金搶礦 收集盡可能多的黃金塊,以便在遊戲會議之間保持個人記錄。

您也可以在 Studio 中編輯遊戲,並且探索包含資料自動儲存等功能的強化 GoldManager 指令碼。

Edit in Studio option from the experience's main page