插件

*此內容是使用 AI(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. 在彈出窗口中,點擊儲存將插件腳本插入你的本地ugins文件夾的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. 點擊創作者面板的鏈接以 配置分配