一个 插件 是一个扩展,它为工作室添加额外的功能或特性。您可以从创作者商店 安装 社区制作的插件,或者您可以 创建 和 发布 自己的插件到 工具箱 以便在您的游戏中使用。
如果您选择将插件分发到创作者商店,您可以选择免费提供它们或以 美元 出售。Roblox 为这些销售提供市场领先的收入分成,因为只扣除税费和支付处理费用。有关销售插件的更多信息,请参见 创作者商店 - 分发和销售资产。
创建新插件
您可以创建自己的插件以改善您在工作室中的工作流程。以下代码示例是一个名为 AddEmptyScript 的插件,它将一个空的 Script 插入到 Instance 的子项中或在 ServerScriptService 中。以下部分解释了创建此插件的主要部分。
首先,您应该在工作室设置的 工作室 部分启用 插件调试启用。这将使 PluginDebugService 在工作室中可用,提供实时调试您的插件代码的功能,并使重新加载和保存插件变得更容易。
local ServerScriptService = game:GetService("ServerScriptService")
local Selection = game:GetService("Selection")
-- 创建一个新的工具栏部分和名为 "Custom" 的插件菜单文件夹
local toolbar = plugin:CreateToolbar("Custom")
-- 添加一个标签为 "Empty Script" 的工具栏按钮
local newScriptButton = toolbar:CreateButton("Empty Script", "创建一个空脚本", "rbxassetid://14978048121")
-- 即使在 3D 视口隐藏时也使按钮可点击
newScriptButton.ClickableWhenViewportHidden = true
local function onPluginButtonClicked()
local selectedObjects = Selection:Get()
local parent = selectedObjects[1] or ServerScriptService
local newScript = Instance.new("Script")
newScript.Source = ""
newScript.Parent = parent
end
newScriptButton.Click:Connect(onPluginButtonClicked)保存插件脚本
要创建插件,首先在本地创建一个 Script 并保存。
在 ServerStorage 中插入一个新的 Script 并将其重命名为 AddEmptyScript。

将上面的 AddEmptyScript 插件 代码复制并粘贴到新脚本中。
在 资源管理器 窗口中选择新脚本,从工作室的 插件 菜单中选择 另存为本地插件。
在弹出窗口中,单击 保存 将插件脚本插入到工作室安装的本地 插件 文件夹中。
插件应出现在 PluginDebugService 中并开始运行。
添加工具栏按钮
要为您的插件在工作室工具栏的 插件 选项卡中添加按钮,请使用 Plugin:CreateToolbar() 和 PluginToolbar:CreateButton() 方法。在 AddEmptyScript 的代码中,第 5 行创建了工具栏中的一个新部分和名为 Custom 的 插件 菜单文件夹,而第 8 行创建了一个标签为 Empty Script 的按钮。

点击时执行代码
要使插件在用户单击工具栏按钮时执行代码,请将一个函数连接到按钮的 PluginToolbarButton.Click 事件。在 AddEmptyScript 的代码中,连接的函数是 onPluginButtonClicked()。
检查用户选择
要根据用户选择的内容修改插件的行为,请使用 Selection 服务。onPluginButtonClicked() 函数检查用户是否选择了任何内容,并将新脚本作为其子项创建,而不是在 ServerScriptService 中创建。如果用户没有选择任何内容,则在 ServerScriptService 中创建新脚本。

支持撤销和重做
使用 ChangeHistoryService 允许用户撤销和重做插件在游戏中所做的更改。在您的脚本中,设置插件调用 TryBeginRecording() 并在进行更改之前存储分配给 API 调用的标识符。然后在进行更改后设置插件调用 FinishRecording(),以便捕获在录制会话期间所做的任何更改以供撤销和重做。
以下代码示例创建了一个示例插件,可以将霓虹材料应用于选定的部件。它使用 ChangeHistoryService 来记录和管理插件所做的更改:
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
-- 创建一个示例插件
local toolbar = plugin:CreateToolbar("示例插件")
local button = toolbar:CreateButton("霓虹效果", "", "")
-- 连接一个函数到点击事件
button.Click:Connect(function()
-- 尝试以特定标识符开始录制
local recording = ChangeHistoryService:TryBeginRecording("将选择设置为霓虹")
-- 检查录制是否成功启动
if not recording then
-- 这表明您的插件开始了先前的录制但从未完成
-- 每个插件一次只能有一个活动的录制
return
end
-- 遍历选定的实例
for _, instance in Selection:Get() do
-- 检查实例是否为 BasePart
if instance:IsA("BasePart") then
instance.Material = Enum.Material.Neon -- 将部件的材料设置为霓虹
end
end
-- 完成录制,将更改提交到历史记录
ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
end)上传插件
完成插件创建后,您可以将其上传到您的库存,以便在所有项目中访问。
要上传插件:
在 资源管理器 窗口中,选择一个插件脚本。
导航到工作室的 插件 菜单,然后选择 发布为插件。
- 可选在资产配置窗口的左上角,单击默认的拼图图像以上传 512×512 的插件缩略图。
填写以下字段:
- 名称 — 您插件的标题。
- 描述 — 描述潜在用户可以期待插件做什么的描述。
- 创作者 — 您希望归属为插件创作者的创作者或组。
单击 提交 按钮。您的插件现在可以在 工具箱 的 库存 和 创作 选项卡下使用。
分发和销售插件
您可以在创作者商店公开分发和销售自己的插件,以供其他人在他们自己的游戏开发中使用。这种货币化方法让您在交易中获得 100% 的净收益,绕过平台费用和 DevEx 费率。有关此过程的更多信息,包括如何设置卖家帐户以设置价格和接收付款,请参见 创作者商店 - 分发和销售资产。
