一个 插件 是为 Studio 添加额外功能或功能的扩展。你可以安装社区制作的插件从创作者商店,或你可以创建并发布自己的到工具箱以便在你的体验中使用。
如果你选择将插件也分发到创作者商店,你可以免费提供它们或以 美元 的价格出售(最低价格为 $4.99)。Roblox 为这些销售提供领先的收入分享,因为只有税收和支付处理费扣除。了解有关销售插件的更多信息,请参阅在创作者商店上销售。
创建新插件
您可以在 Studio 中创建自己的插件来提高工作流程。以下代码示例是一个名为 EmptyScriptAdder 的插件,该插件将一个空脚本插入对象的子或在 ServerScriptService 中。以下部分解释了创建此插件的主要部分。
首先,你应该在 Studio 设置的 Studio 部分 中启用 启用插件调试 。这将暴露 Studio 中的 PluginDebugService ,为您的插件代码提供实时调试,并使重新加载和保存您的插件更容易。
EmptyScriptAdder 插件
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
-- 创建一个名为“自定义脚本工具”的新工具栏部分
local toolbar = plugin:CreateToolbar("Custom Script Tools")
-- 添加一个名为“创建空脚本”的工具栏按钮
local newScriptButton = toolbar:CreateButton("Create Empty Script", "Create an empty script", "rbxassetid://14978048121")
-- 即使 3D 视窗隐藏,也可让按钮可点击
newScriptButton.ClickableWhenViewportHidden = true
local function onNewScriptButtonClicked()
local selectedObjects = Selection:Get()
local parent = game:GetService("ServerScriptService")
if #selectedObjects > 0 then
parent = selectedObjects[1]
end
local newScript = Instance.new("Script")
newScript.Source = ""
newScript.Parent = parent
ChangeHistoryService:SetWaypoint("Added new empty script")
end
newScriptButton.Click:Connect(onNewScriptButtonClicked)
保存插件脚本
插件从脚本开始。要创建插件,请创建一个 Script 并使用 浏览器 将其保存为插件。例如,要创建 EmptyScriptAdder 插件 :
在 ServerStorage 内插入新的 Script 并将其重命名为 EmptyScriptAdder 。
复制并粘贴 EmptyScriptAdder 插件 代码到新脚本中。
在 浏览器 窗口中,右击脚本,然后选择 保存为本地插件 。
在弹出窗口中,单击 保存 将插件脚本插入你的本地 插件 文件夹的 Studio安装。
插件应该出现在 PluginDebugService 并开始运行。
重装和保存更改
在 内,你可以单击右键以更新插件,然后从上下文菜单中选择 保存并重新加载插件 来更新插件。如果您只想重新加载插件,例如使用断点跳过代码段而不保存插件,您可以选择 重新加载插件 。
添加工具栏按钮
要将插件按钮添加到 Studio 工具栏的 插件 选项卡,请使用 Plugin:CreateToolbar() 和 PluginToolbar:CreateButton() 方法。在 EmptyScriptAdder 的代码中,第 5 行在工具栏中创建了名为 自定义脚本工具 的新部分,第 8 行创建了名为 创建空白脚本 的按钮。

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

支持撤消和重做
使用 ChangeHistoryService 允许用户在体验中撤消和重做插件所做的更改。在您的脚本中,将插件设置为调用 ChangeHistoryService:TryBeginRecording() 并存储在进行更改之前分配给 API 调用的标识符。然后将插件设置为在进行更改后调用 ChangeHistoryService:FinishRecording(),以便它捕获录制会话期间进行的任何更改以进行撤消和重做。
以下代码示例创建了一个示例插件,可以将霓虹灯材料应用到选定的部件。它使用 ChangeHistoryService 来记录和管理插件所做的更改:
带有撤消和重做录音的示例材料插件
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
-- 创建一个示例插件
local toolbar = plugin:CreateToolbar("Example Plugin")
local button = toolbar:CreateButton("Neon it up", "", "")
-- 将函数连接到单击事件
button.Click:Connect(function()
local parts = {}
for _, part in Selection:Get() do
if part:IsA("BasePart") then
parts[#parts + 1] = part
end
end
if #parts < 1 then
-- 没有什么可做的。
return
end
-- 尝试使用特定标识符开始录制
local recording = ChangeHistoryService:TryBeginRecording("Set selection to neon")
-- 检查录制是否成功启动
if not recording then
-- 在这里处理错误。这表示您的插件开始了以前
-- 记录,但从未完成。您只能有一个记录
-- 每个插件在一次激活时。
return
end
-- 循环通过选定的零件
for _, part in parts do
part.Material = Enum.Material.Neon -- 将零件的材料设置为霓虹
end
-- 完成录制,将更改提交到历史
ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
end)
上传、分发和货币化插件
与 模型、网格、图像 和 动画 一样,您可以将插件分发到 Roblox,让它们易于在 工具箱 中重复使用。您可以选择将它们公开提供给所有其他创作者在 创作者商店 上,或私下分发给自己使用。如果你选择公开分发你的插件,你可以设置一个价格,用于将它出售给其他创作者。
要分发插件:
在 浏览器 窗口中,右击一个插件脚本,然后从上下文菜单中选择 发布为插件 。
(可选) 在资产配置窗口的左上角,单击图像上传 512×512 图像。
填写以下字段:
- 名称 :您插件的标题。
- 描述 : 一个描述潜在用户应该期望插件做什么的描述。
- 创建者 : 您想将创建者归为插件创建者的创建者。
点击 提交 按钮。您的插件现在可用于您在 库存 和 创作 选项卡的 工具箱 。
点击链接到创建者仪表板来配置分配。