插件

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

一个 插件 是为 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 插件

  1. ServerStorage 内插入新的 Script 并将其重命名为 EmptyScriptAdder

  2. 复制并粘贴 EmptyScriptAdder 插件 代码到新脚本中。

  3. 浏览器 窗口中,右击脚本,然后选择 保存为本地插件

  4. 在弹出窗口中,单击 保存 将插件脚本插入你的本地 插件 文件夹的 Studio安装。

  5. 插件应该出现在 PluginDebugService 并开始运行。

重装和保存更改

在 内,你可以单击右键以更新插件,然后从上下文菜单中选择 保存并重新加载插件 来更新插件。如果您只想重新加载插件,例如使用断点跳过代码段而不保存插件,您可以选择 重新加载插件

添加工具栏按钮

要将插件按钮添加到 Studio 工具栏的 插件 选项卡,请使用 Plugin:CreateToolbar()PluginToolbar:CreateButton() 方法。在 EmptyScriptAdder 的代码中,第 5 行在工具栏中创建了名为 自定义脚本工具 的新部分,第 8 行创建了名为 创建空白脚本 的按钮。

New plugin button added to toolbar in Studio

单击时执行代码

要使插件在用户单击工具栏按钮时执行代码,请将函数连接到按钮的 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,让它们易于在 工具箱 中重复使用。您可以选择将它们公开提供给所有其他创作者在 创作者商店 上,或私下分发给自己使用。如果你选择公开分发你的插件,你可以设置一个价格,用于将它出售给其他创作者。

要分发插件:

  1. 浏览器 窗口中,右击一个插件脚本,然后从上下文菜单中选择 发布为插件

  2. (可选) 在资产配置窗口的左上角,单击图像上传 512×512 图像。

  3. 填写以下字段:

    • 名称 :您插件的标题。
    • 描述 : 一个描述潜在用户应该期望插件做什么的描述。
    • 创建者 : 您想将创建者归为插件创建者的创建者。
  4. 点击 提交 按钮。您的插件现在可用于您在 库存创作 选项卡的 工具箱

  5. 点击链接到创建者仪表板来配置分配