體驗配置

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

體驗配置 讓您在不重新啟動伺服器的情況下即時更新遊戲中的值:

  • 開啟或關閉功能,例如啟用或禁用新的上手地牢。
  • 調整遊戲中的值,例如 Boss 血量、經驗獲得或物品價格。
  • 發佈定時內容,例如在午夜開始的萬聖節活動。

配置的形式是鍵和值。您可以使用鍵獲取值(字符串、數字、布林值或 JSON 對象),然後在需要時隨時更新該值,而無需發佈新版本的體驗。所需的代碼更改非常少:


local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")

您最多可以在任何時候擁有 1,000 個有效的配置,並在 Creator Hub 或 Roblox Studio 中進行管理。

Creator Hub 配置頁面的概述

創建和編輯配置

  1. 在您體驗的 Creator Hub 配置 頁面上,單擊 創建配置

  2. 指定一個鍵、一種類型、一個值,並可選擇性地添加描述,以幫助您或您的團隊稍後識別配置的用途。支持的類型包括字符串、數字、布林值和 JSON 對象。

  3. 將生成的代碼片段複製到您體驗中的伺服器腳本中,可能位於 ServerScriptService。代碼應如下所示:


    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local MY_KEY = "my_key" -- 可選,將配置鍵保存為常量
    local myValue = configSnapshot:GetValue(MY_KEY)
  4. 像使用其他任何變量一樣使用該值。配置 不會做任何事,除非您在代碼中使用它們。

有關在您的腳本中使用配置的更多信息,請參見 將配置添加到您的代碼

編輯配置與創建配置沒有區別。單擊 編輯 按鈕,並根據需要更新值和描述。

限制

配置值按類型具有以下限制。

類型最大大小
字符串100,000 個字符
數字±1.7976931348623157e+308,±2^53 用於精確整數表示
布林值N/A
JSON100,000 個字符

發佈配置

創建配置後,它會移至 待定 狀態,以便您可以在公開可用之前對其進行測試。待定更改對您和您的團隊在 Studio 遊玩時可用,但對遊戲中的玩家不可用。 Creator Hub 上的 配置 頁面顯示所有活動和待定的更改。

顯示未發佈更改的配置頁面
  1. 在測試完您的待定更改後,單擊 立即發佈 以在五分鐘內發佈給所有玩家。如果您更喜歡更長的推送時間,也可以選擇 在 15 分鐘內發佈
  2. (建議)添加描述性發佈消息,指明您更新的內容。該消息將出現在 歷史 頁面上,可以幫助您和您的團隊稍後識別更改的目的。

在 Studio 中創建和編輯配置

如果您願意,您可以在 Roblox Studio 中創建、編輯、階段和發佈配置。單擊 文件 > 打開配置。Studio 界面對於階段和測試新值特別方便。

在配置上工作的 Studio 窗口

查看歷史和還原配置

配置 頁面上,單擊 歷史 以查看過去的更新。每次更新都有變更的時間和日期、誰進行了更改以及發佈消息。

顯示一個配置值差異展開的歷史頁面

  • 展開每一行以查看鍵、變更前的值和變更後的值。
  • 使用 搜索鍵 框搜索鍵—不包括描述或值,只搜尋鍵。

歷史 頁面還允許您將配置恢復到之前的狀態:

  1. 單擊變更旁邊的 還原 以將 "之前" 的值階段化。請注意,恢復配置會丟棄所有現有的待定更改。
  2. 返回 配置 頁面並 發佈配置

將配置添加到您的代碼

處理配置的主要類是 ConfigService,它獲取您體驗的最新鍵和值。ConfigService 只對伺服器腳本可用。嘗試從客戶端腳本調用其方法會導致錯誤。

使用配置的第一步是檢索 ConfigSnapshot,即當前時間所有配置的最新值。有兩種方法可以獲取快照:

  • ConfigService:GetConfigAsync() 適用於要應用於所有玩家的全局配置:


    local ConfigService = game:GetService("ConfigService")
    local configSnapshot = ConfigService:GetConfigAsync()
    local bossHealth = configSnapshot:GetValue("bossHealth")
  • ConfigService:GetConfigForPlayerAsync() 適用於 實驗。它獲取特定於玩家的配置,以便不同的玩家可以獲得不同的值。


    local ConfigService = game:GetService("ConfigService")
    local Players = game:GetService("Players")
    local function onPlayerAdded(player)
    local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)
    local bossHealth = playerConfigSnapshot:GetValue("bossHealth")
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

在任何一種情況下,如果鍵不存在,ConfigSnapshot:GetValue() 將返回 nil。

刷新快照

ConfigSnapshots 代表一個時間點,即要求快照時配置的狀態。為了避免干擾遊戲,對配置的更新 會自動傳播到快照。在競爭性射擊遊戲中,例如,您可能只希望在回合之間獲取新的配置值,以便武器屬性不會在比賽中波動。

要手動獲取最新值,請使用 ConfigSnapshot:Refresh() 方法。可選地,連接一個函數到 ConfigSnapshot.UpdateAvailable 事件以自動刷新:


configSnapshot.UpdateAvailable:Connect(function()
configSnapshot:Refresh()
end)

在刷新快照後,您可以使用 ConfigSnapshot:GetValueChangedSignal() 來監聽特定鍵的更改,以便您可以更新體驗的代碼:


configSnapshot:GetValueChangedSignal("bossHealth"):Connect(function(newHealthValue)
spawnNewBoss(newHealthValue)
end)

錯誤處理

在極少數情況下,當配置加載失敗並且之前從未加載過時,ConfigService:GetConfigAsync() 會引發錯誤。

如果 ConfigService 在之前已加載後與 Roblox 伺服器失去連接,ConfigService:GetConfigAsync() 會返回快照,該快照包含最新的可用值。這些快照會嘗試重新連接,並在成功加載新更新時觸發 UpdateAvailable 事件。

您如何處理這些不尋常的情況取決於您。您可以將調用包裝在 pcall() 中,並在代碼中提供後備值,向玩家顯示錯誤並等待快照重新連接,或其他解決方案。

測試配置

ConfigService 具有內置的方法,可在 Studio 和線上伺服器上暫時測試配置更改,而不影響整個體驗。

要設置本地測試值,請從伺服器腳本或透過 開發者控制台 調用 ConfigService:SetTestingValue()。對測試值的更改會觸發配置更新以及 ConfigSnapshot.UpdateAvailable 信號。就像生產更新一樣,您必須刷新現有快照以獲取測試值:


local ConfigService = game:GetService("ConfigService")
ConfigService:SetTestingValue("bossHealth", 200)
local configSnapshot = ConfigService:GetConfigAsync()
local bossHealth = configSnapshot:GetValue("bossHealth") -- 現在是 200!

測試更改適用於當前伺服器的生命週期,並且不會傳播到其他伺服器。在 Studio 中,它們適用於當前的遊玩會話,不會影響線上伺服器。您可以使用 ConfigService:ClearTestingValue() 手動清除測試更改。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。