插件是为 Studio 添加额外功能或功能的一个扩展。你可以 从创作者商店安装 社区制作的插件,或者你可以 创建 和 发布 你自己的到 2>工具箱2> 以便在您的体验中使用。
如果您选择将插件也分发到创作者商店,您可以免费提供它们或以 美元 (最低价格为$4.99)出售它们。Roblox 对这些销售提供市场领先的收益分配,因为只有税收和付款处理费($4.99)被扣除。有关出售插件的更多信息,请参阅在创作者商店出售。
创建新插件
您可以在 Studio 中创建自己的插件来改善您的工作流程。以下代码示例是一个名为 EmptyScriptAdder 的插件,该插件将一个空脚本作为对象或在 ServerScriptService 中的孩子插入。以下部分解释了创建此插件的主要部分。
首先,您应该在 Studio 设置的 Studio 部分中启用PluginDebugService。这将暴露 Studio 中的 2>Class.PluginDebugService2>,它为您的插件代码提供实时调试,并使重新加载和保存您的插件更容易。
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 并使用 Explorer 将其保存为插件。 例如,创建 EmptyScriptAdder 插件:
在 ServerStorage 中插入一个新的 Class.Script 并将其重命名为 1> EmptyScriptAdder1>。
复制并粘贴 EmptyScriptAdder 插件 代码到新脚本中。
在 Explorer 窗口中,右击脚本,然后选择 保存为本地插件。
在弹出窗口中,单击 保存 将插件脚本插入你的本地 Plugins 文件夹的 Studio 安装。
插件应该出现在 PluginDebugService 并且开始运行。
重装和保存更改
使用您的 Plugin 在 PluginDebugService 中,您可以轻松更新插件,右击它然后从上下文菜单中选择 保存并重新加载插件 来更新插件。如果您只是想重新加载插件,例如使用断点标记一段代码而不保存插件,您可以选择 2>Reload Pl
添加工具栏按钮
要将插件按钮添加到 插件 选项卡的 Studio 工具栏,请使用 Plugin:CreateToolbar() 和 PluginToolbar:CreateButton() 方法。 在 1> EmptyScriptAdder1> 的代码中,第 5 行在工具栏中创建了一个
单击时执行代码
要使插件在用户单击工具栏按钮时执行代码,请连接按钮的 PluginToolbarButton.Click 事件。在 EmptyScriptAdder 的代码中,连接函数是 onNewScriptButtonClicked() 。
检查用户选择
要根据用户的选择修改插件的行为,请使用 Selection 服务。onNewScriptButtonClicked() 函数检查用户是否选择了任何内容,并创建新脚本作为其子脚本而不是在 ServerScriptService 内。 如果用户未选择任何内容,则会在
支持撤销和重做
使用 ChangeHistoryService 允许用户在体验中撤消和重做插件所做的更改。在您的脚本中,将插件设置为调用 ChangeHistoryService:TryBeginRecording() ,并在进行更改之前存储分配给 API 调用的标识符。然后将插件设置为调用 <
下面的代码示例创建了一个示例插件,可以将霓虹灯材料应用到选定的部件。它使用 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)
上传、分发和货币化插件
与 模型 、 网格 、 图像 和 1> 动画1> 一样,您可以将插件分发到 Roblox,以便从 4> 工具箱4> 轻松重用。您可以选择将它们公开提供给
要将插件分配到:
在 Explorer 窗口中,右击一个插件脚本,然后从上下文菜单中选择 发布为插件 。
(可选) 在资产配置窗口的左上角,单击图像上传 512×512 图像。
填写以下字段:
- 名称 : 您插件的标题。
- 描述 :用户潜在期望插件做什么的描述。
- 创建者 :您想将创建者归为插件的创建者。
点击 提交 按钮。您的插件现在可以在 工具箱 的 创建 和1>创建1>选项卡中使用。
单击链接到“创建者仪表板”以配置分布。