Plugin

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立

插件 是創建基本 Studio widget、插件工具欄、插件按鈕等內容的主要對象。它是一個自訂的 add-on 到 Studio ,它添加新行為和功能,不是通常包含的。 插件 對象可以通過 plugin

範例程式碼

Script - Pass the Plugin Global to a ModuleScript

assert(plugin, "This script must be run as a plugin!")
-- Code beyond this point will execute only if the script is run as a plugin
-- Load the module and pass the plugin reference
local pluginModule = require(script.Parent.PluginModule)
pluginModule:Initialize(plugin)
-- Verify if the plugin reference was initialized
pluginModule:CheckForPluginGlobal()
ModuleScript - Receive and Store the Plugin Global

local pluginModule = {}
local plugin -- Local plugin reference
-- Initialize the plugin reference if not already set
function pluginModule:Initialize(pluginReference: Plugin)
if plugin ~= pluginReference then
plugin = pluginReference
else
error("Plugin is already initialized")
end
end
-- Check if the plugin reference is set and print out appropriate info
function pluginModule:CheckForPluginGlobal()
if plugin ~= nil then
print("Plugin reference is set!")
else
warn("Plugin reference is missing!")
end
end
return pluginModule

概要

屬性

方法

活動

屬性

CollisionEnabled

唯讀
未複製
平行讀取

返回 Collisions 在模型標籤下啟用的用戶是否啟用在工作室中。

DisableUIDragDetectorDrags

平行讀取
Roblox 指令碼安全性

GridSize

唯讀
未複製
平行讀取

返回 Studio 中的 模型 或 虛擬人偶 標籤下設定的網格鎖定尺寸。注意,此屬性可能有輕微的圓整錯誤;例如,它可能為 0.0099999997764826 對於用戶設定 1 或 0.4000000

方法

Activate

void
外掛程式安全性

此函數將調用插件的狀態設置為"啟用"。啟用插件可以通過 Plugin:GetMouse() 方法來控制鼠標。

在任何時間,有 0 或 1 個已啟用的插件。啟用一個插件會取消所有其他插件的效果 (它們會收到一個 Plugin.Deactivation 事件)。

也看:

參數

exclusiveMouse: bool

一個Boolean指定是否啟用插件以獨家滑鼠。如果是, PluginMouse 可以透過 Plugin:GetMouse() 取回。


返回

void

CreatePluginAction

外掛程式安全性

此功能在 Roblox Studio 中創建一個 PluginAction ,這是一個代表 Roblox Studio 中的通用執行程序的對象,沒有直接儲存的 ToolbarEnum.Button 。在 Roblox Studio 中,它們可以在 2>File → 進階 → 自��������

當有動作啟動時,PluginAction.Triggered 事件會被發送。

要讓 PluginActions 作為預期的工作,必須使用此功能創建。

也看:

參數

actionId: string

必須是一個獨特的字串,識別這個 PluginAction 從其他人。

text: string

顯示行動作的顯示名稱。

statusTip: string

顯示行動作的詳細說明。

iconName: string

顯示外掛程式的圖示名稱。

預設值:""
allowBinding: bool

Class.PluginAction 是否會從 Studio 的快捷方式檢視圖中隱藏。對於上下文行動有用。預設為 true。

預設值:true

返回

範例程式碼

Creating a PluginAction

local pluginAction = plugin:CreatePluginAction(
"HelloWorldAction",
"Hello World",
"Prints a 'Hello world!'",
"rbxasset://textures/sparkle.png",
true
)
pluginAction.Name = "Test Action"
local function actionTriggered()
print("Hello world!")
end
pluginAction.Triggered:Connect(actionTriggered)

CreatePluginMenu

外掛程式安全性

此功能在 Studio 中建立新的 PluginMenu ,這是一個可以顯示 Studio 中顯示列表的 PluginActions 和支持子菜單的區域選單。

要讓 PluginMenus 正常運行,必須使用此功能創建。

也看:

參數

id: string

菜單的獨一無二 ID。

title: string

使用子選單時顯示的文字。

預設值:""
icon: string

用作子選單時顯示的圖示。

預設值:""

返回

範例程式碼

Creating a PluginMenu and PluginMenuAction

-- This code can be pasted into the command bar, but only once
local pluginMenu = plugin:CreatePluginMenu(math.random(), "Test Menu")
pluginMenu.Name = "Test Menu"
pluginMenu:AddNewAction("ActionA", "A", "rbxasset://textures/loading/robloxTiltRed.png")
pluginMenu:AddNewAction("ActionB", "B", "rbxasset://textures/loading/robloxTilt.png")
local subMenu = plugin:CreatePluginMenu(math.random(), "C", "rbxasset://textures/explosion.png")
subMenu.Name = "Sub Menu"
subMenu:AddNewAction("ActionD", "D", "rbxasset://textures/whiteCircle.png")
subMenu:AddNewAction("ActionE", "E", "rbxasset://textures/icon_ROBUX.png")
pluginMenu:AddMenu(subMenu)
pluginMenu:AddSeparator()
pluginMenu:AddNewAction("ActionF", "F", "rbxasset://textures/sparkle.png")
local toggle = Instance.new("BoolValue")
toggle.Name = "TogglePluginMenu"
toggle.Parent = workspace
local function onToggled()
if toggle.Value then
toggle.Value = false
local selectedAction = pluginMenu:ShowAsync()
if selectedAction then
print("Selected Action:", selectedAction.Text, "with ActionId:", selectedAction.ActionId)
else
print("User did not select an action!")
end
end
end
toggle.Changed:Connect(onToggled)

CreateToolbar

外掛程式安全性

CreateToolbar 函數會創建一個新的 PluginToolbar 以指定的名稱。工具欄可以用於創建按鈕。

參數

name: string

工具欄中的可見文字,標記內含的按鈕群。


返回

範例程式碼

Plugin:CreateToolbar

plugin:CreateToolbar("ExampleToolbar")

Deactivate

void
外掛程式安全性

停用此外掛程式。如果它已啟用,則會解除對PluginMouse的關聯

也看:


返回

void
外掛程式安全性

返回 Enum.JointCreationMode 用戶在 Studio 的模型標籤下設定的用戶。


返回

GetMouse

外掛程式安全性

取得滑鼠 返回一個 PluginMouse 可以在啟用插件時使用的滑鼠。


返回

範例程式碼

Plugin:GetMouse

local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)

GetSelectedRibbonTool

外掛程式安全性

選擇RibbonTool 將返回目前選擇的 Enum.RibbonTool 。它返回一個相對應的工具。這將返回是否通過 Plugin:SelectRibbonTool() 手動或程式化選擇工具。


返回

範例程式碼

Plugin:GetSelectedRibbonTool

plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- wait for next frame
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("The selected RibbonTool is", selectedRibbonTool)

GetSetting

Variant
外掛程式安全性

取回以前儲存的值,或為空,如果指定的鍵匙不存在。

因為多個版本的相同插件可以同時執行 (例如,如果多個 Studio 窗戶開啟),因此您不應該依賴這個值在時間過去保持相同。其他的插件實例可以隨時更新設定。

此呼叫可以靜靜失敗並在 nil 返回,如果多個實例的相同插件正在執行閱取和寫入資料。如果您的插件預期在設定上頻繁寫入和寫出資料,請在此呼叫後的一段時間重新檢查返回的值,以區分是否是設定暫時不可用或不存在。

參數

key: string

返回

Variant

範例程式碼

Plugin:GetSetting

local RAN_BEFORE_KEY = "RanBefore"
local didRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if didRunBefore then
print("Welcome back!")
else
plugin:SetSetting(RAN_BEFORE_KEY, true)
print("Welcome! Thanks for installing this plugin!")
end

Intersect

外掛程式安全性

參數

objects: Instances

返回

IsActivated

外掛程式安全性

此功能在此插件目前啟用後返回 true。


返回

指定插件目前是否啟用的Boolean。

IsActivatedWithExclusiveMouse

外掛程式安全性

此功能在此插件目前啟用時,如果它啟用過 Plugin:Activate() 功能,會返回 true。如果它返回 true, PluginMouse 可以透過 Plugin:GetMouse() 取回。

也看:


返回

這個插件目前是否使用獨家滑鼠。

Negate

Instances
外掛程式安全性

取消指定的零件並且返回結果的 NegateOperations。

參數

objects: Instances

返回

Instances

OpenScript

void
外掛程式安全性

用於在 Roblox Studio 中的編輯器窗口中開啟指定的指令碼實例,並在指定的行中。如果沒有行指定為參數,它將預設為 1。

參數

lineNumber: number
預設值:1

返回

void

範例程式碼

Plugin:OpenScript

local newScript = Instance.new("Script")
newScript.Parent = workspace
plugin:OpenScript(newScript)

OpenWikiPage

void
外掛程式安全性

開啟上下文協助視窗到連結到的 wiki 頁面。

參數

url: string

返回

void

範例程式碼

Plugin:OpenWikiPage

plugin:OpenWikiPage("API:Class/BasePart")

SaveSelectedToRoblox

void
外掛程式安全性

開啟一個用戶的當前選擇的上傳窗口。


返回

void

SelectRibbonTool

void
外掛程式安全性

啟動指定的 Roblox Studio 工具。如果工具開啟窗口,位置參數指定在屏幕上該顯示的位置。

注意:

  • 必須選擇一個對象才能正確運作。
  • position 屬性的尺寸變更不會影響對話框 pop-up。

參數

position: UDim2

返回

void

Separate

Instances
外掛程式安全性

分離指定的聯盟運作並且返回結果的零件。

參數

objects: Instances

返回

Instances

SetSetting

void
外掛程式安全性

在指定的鑰鍵下儲存指定值。值會在 Roblox Studio 關閉後持續使用。這些設定以 JSON 格式儲存為地圖,並使用字串鑰匙來自動轉換為地圖。陣列會自動轉換為地圖,因為它們首先將數字鑰匙轉換為字串。

注意,JSON 格式會加以額外限制,包括下列字符可能會破壞設定檔案:

  • 在鑰匙或值中的背退欄位(\).
  • 新行 ( \n ) 在鑰匙中。
  • 在鑰匙中的引言。( " )。
  • 在鑰匙中的期間 ()。

如果多個實例的相同插件正在執行閱取和寫入資料,這個呼叫可能會靜悄悄失敗。如果您的插件預期在設定上頻繁寫入資料,您可以檢查數據是否正確寫入,通過呼叫 Plugin:GetSetting()

參數

key: string
value: Variant

返回

void

範例程式碼

Plugin:GetSetting and Plugin:SetSetting

local RAN_BEFORE_KEY = "RunBefore"
local hasRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if hasRunBefore then
print("Welcome back!")
else
print("Thanks for installing this plugin!")
plugin:SetSetting(RAN_BEFORE_KEY, true)
end

StartDrag

void
外掛程式安全性

開始拖曳 會使用參數典型表來啟動拖曳行動。參數如下:


<tbody>
<tr>
<td><b>發件人</b></td>
<td>字串</td>
<td><code>""</code></td>
<td>
確定拖曳動作的來源目標
</td>
</tr>
<tr>
<td><b>MimeType</b></td>
<td>字串</td>
<td><code>""</code></td>
<td>
MINE 類型的 <b>資料</b>。
</td>
</tr>
<tr>
<td><b>資料</b></td>
<td>字串</td>
<td><code>""</code></td>
<td>
關於拖曳動作的信息,例如被拖曳的內容。應該由拖曳目標使用。
</td>
</tr>
<tr>
<td><b>滑鼠圖示</b></td>
<td><code>Datatype.Content</code></td>
<td><code>""</code></td>
<td>
拖曳時使用的滑鼠指針。如果是空的,則會使用預設滑鼠指針。
</td>
</tr>
<tr>
<td><b>拖曳圖示</b></td>
<td><code>Datatype.Content</code></td>
<td><code>""</code></td>
<td>
一張在拖曳時在鼠標指针下顯示的圖像。這應該代表正在拖曳的項目。
</td>
</tr>
<tr>
<td><b>熱點</b></td>
<td><code>Datatype.Vector2</code></td>
<td><code>Datatype.Vector2.new(0, 0)</code></td>
<td>
從左上角開始的像素 Offset ,其中 <b>拖曳圖示</b> 應該 "持有"
</td>
</tr>
</tbody>
名稱類型預設說明

也看:

參數

dragData: Dictionary

返回

void

範例程式碼

Plugin Drag and Drop

assert(plugin, "This script must be run as a Studio plugin")
local widgetInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 300, 200)
local dragSourceWidget = plugin:CreateDockWidgetPluginGui("Drag Source", widgetInfo)
dragSourceWidget.Title = "Drag Source"
local textBox = Instance.new("TextBox")
textBox.Parent = dragSourceWidget
textBox.Size = UDim2.new(1, 0, 0, 32)
textBox.Text = "Hello, plugin drags"
local dragButton = Instance.new("TextButton")
dragButton.Size = UDim2.new(1, 0, 1, -32)
dragButton.Position = UDim2.new(0, 0, 0, 32)
dragButton.Text = "Edit the text above, then start drag here"
dragButton.Parent = dragSourceWidget
function onMouseButton1Down()
local dragData = {
Sender = "SomeDragSource",
MimeType = "text/plain",
Data = textBox.Text,
MouseIcon = "",
DragIcon = "",
HotSpot = Vector2.new(0, 0),
}
plugin:StartDrag(dragData)
end
dragButton.MouseButton1Down:Connect(onMouseButton1Down)
-- This widget will receive drops
local dragTargetWidget = plugin:CreateDockWidgetPluginGui("Drop Target", widgetInfo)
dragTargetWidget.Title = "Drop Target"
-- This TextLabel will display what was dropped
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.Text = "Drop here..."
textLabel.Parent = dragTargetWidget
local function onDragDrop(dragData)
if dragData.MimeType == "text/plain" then
textLabel.Text = dragData.Data
else
textLabel.Text = dragData.MimeType
end
end
dragTargetWidget.PluginDragDropped:Connect(onDragDrop)
dragTargetWidget.PluginDragEntered:Connect(function(_dragData)
print("PluginDragEntered")
end)
dragTargetWidget.PluginDragLeft:Connect(function(_dragData)
print("PluginDragLeft")
end)
dragTargetWidget.PluginDragMoved:Connect(function(_dragData)
print("PluginDragMoved")
end)
外掛程式安全性

聯合指定的零件,並且返回結果的 UnionOperation。

參數

objects: Instances

返回

CreateDockWidgetPluginGui

暫停
外掛程式安全性

CreateDockWidgetPluginGui 建立了一個名為 DockWidgetPluginGui 的新 DockWidgetPluginGuiInfo 。第一個參數, 0> uginGuiId0> ,應該是一個獨一無二的字串。它用來儲存 widget 的 dock 狀態和其他內部細節。

參數

pluginGuiId: string

一種獨特且一致的標識,用於儲存 widget 的小工具狀態和其他內部細節。

dockWidgetPluginGuiInfo: DockWidgetPluginGuiInfo

描述 DockWidgetPluginGui 以創建 (初始狀態、大小等)。


返回

範例程式碼

Widget GUI Text Button

-- Create new 'DockWidgetPluginGuiInfo' object
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float, -- Widget will be initialized in floating panel
true, -- Widget will be initially enabled
false, -- Don't override the previous enabled state
200, -- Default width of the floating window
300, -- Default height of the floating window
150, -- Minimum width of the floating window (optional)
150 -- Minimum height of the floating window (optional)
)
-- Create new widget GUI
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
local testButton = Instance.new("TextButton")
testButton.BorderSizePixel = 0
testButton.TextSize = 20
testButton.TextColor3 = Color3.new(1, 0.2, 0.4)
testButton.AnchorPoint = Vector2.new(0.5, 0.5)
testButton.Size = UDim2.new(1, 0, 1, 0)
testButton.Position = UDim2.new(0.5, 0, 0.5, 0)
testButton.SizeConstraint = Enum.SizeConstraint.RelativeYY
testButton.Text = "Click Me"
testButton.Parent = testWidget

ImportFbxAnimation

暫停
外掛程式安全性

此功能提示用戶開啟一個 .fbx 動畫檔案,可以載入到 rigModel 上,然後將動畫作為 KeyframeSequenceWorkspace 中插入。

參數

rigModel: Instance
isR15: bool
預設值:true

返回

ImportFbxRig

暫停
外掛程式安全性

提示用戶開啟 .fbx 檔案,上傳模型的個別零件以網格的形式上傳,並且生成一個角色網格以便在動畫中使用,這是載入到 Workspace 的。

參數

isR15: bool
預設值:true

返回

PromptForExistingAssetId

暫停
外掛程式安全性

在 Roblox Studio 中開啟一個窗口,提示使用者選擇指定的 assetType 類型。返回指定的資產ID,或 -1 如果窗口已關閉。

參數

assetType: string

返回

PromptSaveSelection

暫停
外掛程式安全性

提示使用者儲存他們目前的選擇以指定的檔案名稱。如果使用者儲存了檔案,則返回真。

參數

suggestedFileName: string
預設值:""

返回

活動

Deactivation

外掛程式安全性

發生在 Plugin 被無效化時。這發生當 Plugin:Deactivate() 或其他插件呼叫 Plugin:Activate() 時,這使所有其他插件都必須失去積極狀態。

也看:


Unloading

外掛程式安全性

此事件在 Plugin 停止執行之前立即發生。當停止執行時,插件會卸載,未安裝,即將更新或關閉。

它可以讓插件在其指令碼停止執行後自動清理,例如移除 DataModel 中的不必要例子。如果插件無法正確清理,舊副本將會剩下。當發生這樣的情況時,用戶可能會被強迫關閉並重新開啟位置,這是一個不佳的使用者體驗。

PluginToolbarButtonsDockWidgetPluginGuisPluginGuis 等插件相關例子,會自動清理,因此不需要將它們移除。