一個 插件 是為 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 插件 代碼到新腳指令碼中。
在 檢索器 窗口中,右鍵單擊腳本並選擇 儲存為本地插件 。
在彈出窗口中,點擊儲存將插件腳本插入你的本地ugins文件夾的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 圖像。
填寫以下欄位:
- 名稱 :您外掛程式的標題。
- 說明 : 一個描述潛在用戶應該期望插件做什麼的說明。
- 創作者 : 您想將創作者標為外掛程式的創作者。
點擊 提交 按鈕。您的插件現在可以在 庫存 和 創作 標籤的 工具箱 中使用。
點擊創作者面板的鏈接以 配置分配。