體驗配置 讓您在不重新啟動伺服器的情況下即時更新遊戲內的值:
- 開啟或關閉功能,例如啟用或禁用新的入門地牢。
- 調整遊戲內的值,如首領生命值、經驗獲得或物品價格。
- 發佈定時內容,例如在午夜開始的萬聖節活動。
- 給不同的玩家不同的值,例如給新玩家額外的盔甲。
配置的形式是鍵和值。您可以使用鍵來獲取值(字符串、數字、布林值或 JSON 對象),而不是在代碼中使用硬編碼的常量,然後在不發佈新版本的情況下隨時更新該值。所需的代碼更改非常少:
local ConfigService = game:GetService("ConfigService")
local configSnapshot = ConfigService:GetConfigAsync()
local myValue = configSnapshot:GetValue("my_key_name")您可以在任何時候擁有最多 1,000 個活動配置,並可以在創作者中心或 Roblox Studio 中管理它們。

創建和編輯配置
在您的體驗的 創作者中心 配置 頁面上,點擊 創建配置。
指定一個鍵、一種類型、一個值,並可選擇性地添加描述,以幫助您或您的團隊稍後識別配置的目的。支持的類型有字符串、數字、布林值和 JSON 對象。點擊 下一步。
(可選)添加目標條件和值。條件讓您可以將配置值應用於符合(或不符合)某些標準的用戶,例如從未玩過您的遊戲的用戶或講葡萄牙語的用戶。要了解更多,請參見 將配置目標設置為特定玩家。
將生成的代碼片段複製到您的體驗中的伺服器腳本中,可能在 ServerScriptService 中。對於不因玩家而異的“全局”配置,代碼可能看起來像這樣:
local ConfigService = game:GetService("ConfigService")local configSnapshot = ConfigService:GetConfigAsync()local MY_KEY = "my_key" -- 可選,將配置鍵存儲為常量local myValue = configSnapshot:GetValue(MY_KEY)local ConfigService = game:GetService("ConfigService")local Players = game:GetService("Players")local MY_KEY = "my_key" -- 可選,將配置鍵存儲為常量local function onPlayerAdded(player)local playerConfigSnapshot = ConfigService:GetConfigForPlayerAsync(player)local myValue = playerConfigSnapshot:GetValue(MY_KEY)endPlayers.PlayerAdded:Connect(onPlayerAdded)像使用其他變量一樣使用該值。配置 不會做任何事情,除非您在代碼中使用它們。
有關在腳本中使用配置的更多信息,請參見 將配置添加到您的代碼中。
編輯配置與創建配置沒有區別。點擊 編輯 按鈕並根據需要更新值和描述。
限制
配置值按類型具有以下限制。
| 類型 | 最大大小 |
|---|---|
| 字符串 | 100,000 字符 |
| 數字 | ±1.7976931348623157e+308, ±2^53 用於精確整數表示 |
| 布林值 | 不適用 |
| JSON | 100,000 字符 |
發佈配置
創建配置後,它會移至 待定 狀態,以便您可以在其公開可用之前進行測試。待定更改在 Studio 遊玩會話中對您和您的團隊可用,而不對在線體驗中的玩家可用。創作者中心的 配置 頁面顯示所有活動和待定的更改。

- 測試完待定更改後,點擊 立即發佈 以幾乎瞬間發佈給所有玩家(大約在 15 秒到 1 分鐘之間)。如果您更喜歡更長、更逐步的推出期,您也可以選擇 在 15 分鐘內發佈。在某些情況下,客戶端可能需要幾分鐘才能在發佈後反映更改。
- (建議)添加描述性發佈消息,指示您更新了什麼。此消息會顯示在 歷史 頁面上,並可以幫助您和您的團隊稍後識別更改的目的。
將配置目標設置為特定玩家
默認情況下,配置向每個人提供相同的值。條件配置 讓您根據玩家屬性(國家、任期、語言、付款狀態等)向不同的玩家提供不同的值。
條件配置有三個部分決定玩家獲得什麼值:
- 條件規則 定義誰符合。每條規則都是一個邏輯表達式,例如“在前 30 天內的活躍付款者”,用於評估玩家屬性。
- 規則排序 定義當玩家符合多條規則時如何選擇。Roblox 從上到下評估規則並應用第一個匹配的分支。規則是全局排序的,無論您將條件值添加到單個鍵的順序如何。
- 條件值 定義符合條件的玩家獲得什麼。對於每個條件,您附加一個值。如果玩家符合該條件內的規則,他們將獲得相關的值;否則,他們將獲得配置的默認值。
支持的屬性
條件配置支持以下屬性。這些屬性與分析儀表板中等效的 過濾器 和 細分 具有相同的定義。
| 屬性 | 描述 |
|---|---|
| 國家 | 玩家所在的地理位置。 |
| 語言 | 玩家語言設置。 |
| 新玩家與回歸玩家 | 玩家是第一次玩您的體驗還是之前玩過。 |
| 來源 | 玩家如何找到您的體驗,例如首頁推薦、搜索或贊助廣告。 |
| 玩家首次遊玩時間 | 玩家首次遊玩您的體驗的時間,例如 0-30 天前或 31-90 天前。每日計算。 |
| 遊戲內活躍付款者狀態 | 玩家在您的體驗中的付款活動,讓您可以針對不同的付費用戶群體。每日計算。 |
| 遊戲內活動狀態 | 玩家最近玩過您的體驗的時間,讓您可以對新玩家、活躍玩家、休眠玩家和重新激活的玩家進行不同的處理。每日計算。 |
| 用戶參與度 | 玩家每週玩您的體驗的時間,讓您可以將最活躍的玩家與更休閒的玩家區分開來。每日計算。 |
| 平台消費者狀態 | 玩家是否為 Roblox 平台的活躍消費者。每日計算。 |
| 平台活動狀態 | 玩家最近在 Roblox 上的遊玩時間,而不僅僅是在您的體驗中。每日計算。 |
創建條件值
您在創建或編輯配置時添加條件。在 添加目標 步驟中,添加一個條件:
- 選擇一個現有條件或點擊 創建一個新的。
- 添加一個或多個規則。
- 設置符合條件的玩家將獲得的值。
例如,為了給在過去 30 天內開始玩的頂級活躍付款者提供更困難的體驗,您可能會增加他們的 dynamicBossHealth 值。

在代碼中訪問目標值
要檢索目標值,使用 ConfigService:GetConfigForPlayerAsync(),它會評估個別玩家的規則和排序。ConfigService:GetConfigAsync() 不 應用目標,因為它不針對單個玩家。要了解更多,請參見 將配置添加到您的代碼中。
最佳實踐和限制
- 每個條件值必須與配置的默認值的數據類型(布林值、字符串、數字或 JSON)匹配。
- 每個遊戲最多可以有 100 個條件。
- 每個配置鍵支持最多 20 個條件。
- 在發佈之前驗證規則排序。由於規則是全局排序的,請確認您的評估順序是否正確優先。要查看順序,請點擊 條件 標籤。
在 Studio 中創建和編輯配置
如果您願意,您可以在 Roblox Studio 中創建、編輯、待定和發佈配置。點擊 文件 > 打開配置 以打開小部件。Studio 界面特別方便用於待定和測試新值。

將配置發佈到另一個體驗
在 Studio 中,您可以將配置發佈到另一個體驗,這將完全覆蓋該體驗的配置。這對於將配置從待定或開發體驗同步到在線體驗特別有用。
在 Roblox Studio 中,轉到頂部菜單並選擇 文件 > 打開配置。
在配置小部件的 已發佈 標籤中,點擊 ⋮ 圖標並選擇 發佈為。

在出現的對話框中,從您擁有編輯權限的組列表中找到並選擇目標體驗。

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

- 展開每一行以查看鍵、更改前的值和更改後的值。
- 使用 搜索鍵 框搜索鍵——僅限鍵,不包括描述或值。
歷史 頁面還允許您將配置恢復到先前的狀態:
- 點擊更改旁邊的 恢復 以待定“之前”的值。請注意,恢復配置會丟棄任何現有的待定更改。
- 返回 配置 頁面並 發佈配置。
將配置添加到您的代碼中
處理配置的主要類是 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")endPlayers.PlayerAdded:Connect(onPlayerAdded)
在任何情況下,如果鍵不存在,ConfigSnapshot:GetValue() 將返回 nil。
自動完成
配置集成到腳本編輯器的自動完成中。當您調用 ConfigSnapshot:GetValue() 時,編輯器會建議您的配置鍵名稱,並在您懸停在變量名稱上時顯示每個配置的類型。
如果您的腳本使用 --!strict 模式,則 linter 可以為您檢查並驗證類型。
自動完成也適用於使用複雜嵌套 JSON 類型的配置。
刷新快照
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() 手動清除測試更改。