体验配置 让您实时更新游戏内的值,而无需重启服务器:
- 开启或关闭功能,例如启用或禁用新的入门地下城。
- 调整游戏内的值,如首领生命值、经验获取或物品价格。
- 启动定时内容,例如在午夜开始的万圣节活动。
配置的形式是键和值。您可以使用键来获取值(字符串、数字、布尔值或 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)像使用其他变量一样使用该值。配置 不做任何事情,除非您在代码中使用它们。
有关在脚本中使用配置的更多信息,请参见 将配置添加到您的代码。
编辑配置与创建配置没有区别。点击 编辑 按钮并根据需要更新值和描述。
限制
配置值按类型具有以下限制。
| 类型 | 最大大小 |
|---|---|
| 字符串 | 100,000 个字符 |
| 数字 | ±1.7976931348623157e+308, ±2^53 用于精确整数表示 |
| 布尔值 | 不适用 |
| JSON | 100,000 个字符 |
发布配置
创建配置后,它会移动到 暂存 状态,以便您在其公开可用之前进行测试。暂存的更改在 Studio 游戏会话中对您和您的团队可用,而对实时体验中的玩家不可用。创作者中心的 配置 页面显示所有活动和暂存的更改。

- 在测试完您的暂存更改后,点击 立即发布,几乎可以立即发布给所有玩家(大约在 15 秒到 1 分钟之间)。如果您更喜欢更长、更渐进的发布周期,您也可以选择 在 15 分钟内发布。在某些情况下,客户端可能需要几分钟才能在发布后反映更改。
- (推荐)添加描述性发布消息,指明您更新了什么。此消息会出现在 历史 页面上,可以帮助您和您的团队稍后识别更改的目的。
在 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() 手动清除测试更改。