Plugin
Plugin is the main object responsible for creating basic studio widgets. It is a custom add-on to Studio which adds new behavior and features that are not normally included.
요약
속성
- 읽기 전용복제되지 않음병렬 읽기
Returns whether the user enabled Collisions in studio under the Model tab.
Returns the grid size the user has set in studio under the Model tab.
메서드
Sets the state of the calling plugin to activated.
- CreatePluginAction(actionId : string,text : string,statusTip : string,iconName : string,allowBinding : bool):PluginAction플러그인 보안
Creates a PluginAction which is an object that represents a generic performable action in Roblox Studio, with no directly associated Toolbar or Enum.Button.
- 플러그인 보안
Creates a new plugin menu.
- 플러그인 보안
Creates a new PluginToolbar with the given name.
- 플러그인 보안
Deactivates the plugin.
- 플러그인 보안
Returns the Enum.JointCreationMode the user has set in studio under the Model tab.
- 플러그인 보안
Returns a Mouse that can be used while the plugin is active.
- 플러그인 보안
Returns the currently selected Enum.RibbonTool.
- 플러그인 보안
Retrieves a previously stored value with the given key, or nil if the given key doesn't exist.
- 플러그인 보안
Returns true if this plugin is currently active, after having been activated via the Plugin:Activate() function.
- 플러그인 보안
Returns true if this plugin is currently active with an exclusive mouse, after having been activated via the Plugin:Activate() function.
Negates the given parts and returns the resulting NegateOperations.
- 플러그인 보안
Used to open the given script instance in an editor window, in Roblox studio, at the given line. If no line is given as an argument it will default to 1.
- 플러그인 보안
Opens the context help window to the wiki page that url links to.
- 플러그인 보안
Opens an upload window for the user's current selection.
- 플러그인 보안
Activates the specified Roblox Studio tool.
Separates the given UnionOperations and returns the resulting parts.
- 플러그인 보안
Stores a given value for later use under the given key. The value will persist even after studio is closed.
- 플러그인 보안
Starts a drag action given a dictionary of parameters.
Unions the given parts and returns the resulting UnionOperation.
- CreateDockWidgetPluginGui(pluginGuiId : string,dockWidgetPluginGuiInfo : DockWidgetPluginGuiInfo):DockWidgetPluginGui생성플러그인 보안
Creates a DockWidgetPluginGui given a DockWidgetPluginGuiInfo.
- 생성플러그인 보안
Prompts the user to open a .fbx animation file that can be loaded onto the rigModel, then proceeds to insert the animation as a KeyframeSequence in the Workspace.
- 생성플러그인 보안
Prompts the user to open a .fbx file, uploads the individual components of the model as meshes, and generates a character rig for use in animation, which is loaded into the Workspace.
- 생성플러그인 보안
Opens a window in Roblox Studio, which prompts the user to select an asset based on the assetType specified. Returns what assetId was selected, or -1 if the window was closed.
- 생성플러그인 보안
Prompts the user to save their current selection with the specified file name. Returns true if the user did save the file.
이벤트
- 플러그인 보안
Fired when the plugin is deactivated.
- 플러그인 보안
Fires immediately before the Plugin stops running.
속성
CollisionEnabled
Returns whether the user enabled Collisions in studio under the Model tab.
GridSize
Returns the grid size the user has set in studio under the Model tab. This can be 1, 0.2 or 0.01, but has rounding errors. The 1/5th option should return 0.2, but could return 0.20000000298023 instead. This code can be used to get the real gridsize:
local gridsize = plugin.GridSizeif math.abs(gridsize-0.2) < 0.005 then -- Check if the gridsize is between 0.195 and 0.205gridsize = 0.2elseif math.abs(gridsize-0.01) < 0.005 then -- Between 0.005 and 0.015gridsize = 0.01else -- Assume it's 1gridsize = 1end
메서드
Activate
This function sets the state of the calling plugin to activated. Activating the plugin allows mouse control through the Plugin:GetMouse() method.
At any given time there are either 0 or 1 Activated Plugins. Activating a plugin will deactivate all other plugins (they will receive a Plugin.Deactivation event).
See also:
- Plugin:IsActivatedWithExclusiveMouse(), returns true if this plugin is currently active with an exclusive mouse, after having been activated via this function
- Plugin.Unloading, fires immediately before the plugin is unloaded or reloaded via uninstallation, deactivation, or updating
매개 변수
A boolean specifying whether to activate the plugin with exclusive mouse. If true, a PluginMouse can be retrieved via Plugin:GetMouse().
반환
CreatePluginAction
This function creates a PluginAction which is an object that represents a generic performable action in Roblox Studio, with no directly associated Toolbar or Enum.Button. In Roblox Studio, they can be assigned a keyboard shortcut under File → Advanced → Customize Shortcuts…, and they can also be added to the Quick Access Toolbar.
When an action is triggered, the PluginAction.Triggered event is signaled.
In order for PluginActions work as expected, they must be created using this function.
See also:
- PluginMenu, a context menu that can be shown in Studio which displays a list of PluginActions and supports submenus
- Plugin:CreatePluginMenu(), creates a PluginMenu
매개 변수
Must be a unique string that identifies this PluginAction from others.
The displayed name of the action.
The displayed description of the action.
The name of the icon used to display the plugin.
Whether the PluginAction will be hidden from Studio's shortcuts view. Useful for contextual actions. Defaults to true.
반환
코드 샘플
local plugin = plugin or getfenv().PluginManager():CreatePlugin()
plugin.Name = "Plugin"
local function actionTriggered()
print("Hello world!")
end
local pluginAction = plugin:CreatePluginAction(
"HelloWorldAction",
"Hello World",
"Prints a 'Hello world!'",
"rbxasset://textures/sparkle.png",
true
)
pluginAction.Triggered:Connect(actionTriggered)
CreatePluginMenu
This function creates a new PluginMenu, which is a context menu that can be shown in Studio that displays a list of PluginActions and supports submenus.
In order for PluginMenus to work as expected, they must be created using this function.
See also:
- PluginAction, an object that represents a generic performable action in Roblox Studio, with no directly associated Toolbar or Enum.Button.
- Plugin:CreatePluginAction(), creates a PluginAction
- PluginMenu.Title, the text to be displayed when used as a sub menu
- PluginMenu.Icon, the icon to be displayed when used as a sub menu
- PluginMenu:AddAction(), adds the given action to the menu
- PluginMenu:AddNewAction(), creates a temporary action that is hidden from Studio's customize shortcuts window
- PluginMenu:AddMenu(), adds the given menu as a separator
- PluginMenu:AddSeparator(), adds a separator between items in the menu
- PluginMenu:Clear(), clears the menu
- PluginMenu:ShowAsync(), shows the menu at the mouse cursor. Yields until either an item is selected or the menu is closed. The selected action fires its Triggered event
매개 변수
Unique ID for the menu.
The text to be displayed when used as a sub menu.
The icon to be displayed when used as a sub menu.
반환
코드 샘플
-- This code can be pasted into the command bar, but only once.
local plugin = plugin or getfenv().PluginManager():CreatePlugin()
plugin.Name = "Plugin"
plugin.Parent = workspace
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
The CreateToolbar function creates a new PluginToolbar with the given name. The toolbar can then be used to create plugin buttons.
매개 변수
The visible text on the toolbar, labeling the group of buttons contained within.
반환
코드 샘플
plugin:CreateToolbar("ExampleToolbar")
Deactivate
Deactivates the plugin. This will disengage the associated PluginMouse if it has been activated
See also:
- Plugin:Activate(), sets the state of the calling plugin to activated
- Plugin.Deactivation, fires when the plugin is deactivated
- Plugin.Unloading, fires immediately before the plugin is unloaded or reloaded via uninstallation, deactivation, or updating
반환
GetJoinMode
Returns the Enum.JointCreationMode the user has set in studio under the Model tab.
반환
GetMouse
GetMouse returns a PluginMouse that can be used while the plugin is active through Plugin:Activate().
반환
코드 샘플
local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)
GetSelectedRibbonTool
GetSelectedRibbonTool return the currently selected Enum.RibbonTool. It returns an Enum that corresponds to a particular tool. This will return whether the tool is selected manually or programmatically via Plugin:SelectRibbonTool().
반환
코드 샘플
plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- wait for next frame
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("The selected RibbonTool is", selectedRibbonTool)
GetSetting
Retrieves a previously stored value with the given key, or nil if the given key doesn't exist.
매개 변수
반환
코드 샘플
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
IsActivated
This function returns true if this plugin is currently active, after having been activated via the Plugin:Activate() function.
반환
A boolean indicating whether the plugin is currently active.
IsActivatedWithExclusiveMouse
This function returns true if this plugin is currently active with an exclusive mouse, after having been activated via the Plugin:Activate() function. If this returns true, a PluginMouse can be retrieved via Plugin:GetMouse().
See also:
- Plugin.Deactivation, fires when the plugin is deactivated
- Plugin.Unloading, fires immediately before the plugin is unloaded or reloaded via uninstallation, deactivation, or updating
반환
Whether this plugin is currently active with an exclusive mouse.
Negate
Negates the given parts and returns the resulting NegateOperations.
매개 변수
반환
OpenScript
Used to open the given script instance in an editor window, in Roblox studio, at the given line. If no line is given as an argument it will default to 1.
매개 변수
반환
코드 샘플
local newScript = Instance.new("Script")
newScript.Parent = workspace
plugin:OpenScript(newScript)
OpenWikiPage
Opens the context help window to the wiki page that url links to.
매개 변수
반환
코드 샘플
plugin:OpenWikiPage("API:Class/BasePart")
SaveSelectedToRoblox
Opens an upload window for the user's current selection.
반환
SelectRibbonTool
Activates the specified Roblox Studio tool. If the tool opens a window, the position parameter specifies where it should be shown on the screen.
Note:
- An object must be selected in order for this to work correctly.
- Altering the scale fields of the position property will not affect the dialog popups.
매개 변수
반환
Separate
Separates the given UnionOperations and returns the resulting parts.
매개 변수
반환
SetSetting
Stores a given value for later use under the given key. The value will persist even after studio is closed.
매개 변수
반환
코드 샘플
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
StartDrag initiates a drag action using a dictionary of parameters. The parameters are as follows:
Name | Type | Default | Description |
---|---|---|---|
Sender | string | "" | Identifies the source of the drag action to the drop target |
MimeType | string | "" | The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of Data. |
Data | string | "" | Information about the drag action (eg. what is being dragged). Should be used by the drop target. |
MouseIcon | Content | "" | The icon to use for the mouse cursor during the drag. If empty, uses the default cursor. |
DragIcon | Content | "" | An image to render under the mouse cursor during the drag. This should represent the item being dragged. |
HotSpot | Vector2 | Vector2.new(0, 0) | The pixel offset from the top-left where the cursor should "hold" the DragIcon. |
See also:
매개 변수
반환
코드 샘플
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)
Union
Unions the given parts and returns the resulting UnionOperation.
매개 변수
반환
CreateDockWidgetPluginGui
CreateDockWidgetPluginGui creates a new DockWidgetPluginGui from the given DockWidgetPluginGuiInfo. The first parameter, pluginGuiId, should be a unique and consistent string. It is used to save the state of the widget's dock state and other internal details.
매개 변수
A unique and consistent identifier used to storing the widget's dock state and other internal details.
Describes the DockWidgetPluginGui to create (initial state, size, etc).
반환
코드 샘플
-- 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
This function prompts the user to open a .fbx animation file that can be loaded onto the rigModel, then proceeds to insert the animation as a KeyframeSequence in the Workspace.
매개 변수
반환
ImportFbxRig
Prompts the user to open a .fbx file, uploads the individual components of the model as meshes, and generates a character rig for use in animation, which is loaded into the Workspace.
매개 변수
반환
PromptForExistingAssetId
Opens a window in Roblox Studio, which prompts the user to select an asset based on the assetType specified. Returns what assetId was selected, or -1 if the window was closed.
매개 변수
반환
이벤트
Deactivation
Fired when the Plugin is deactivated. This occurs when either the plugin code calls Plugin:Deactivate(), or because some other plugin called Plugin:Activate(), which forces all other plugins to lose their active state.
See also:
- Plugin.Unloading, fires immediately before the plugin is unloaded or reloaded via uninstallation, deactivation, or updating
Unloading
This event fires immediately before the Plugin stops running. Plugins are unloaded when disabled, uninstalled, about to be updated, or when the place is closing.
It enables a plugin to clean up after itself before its scripts stop running, e.g. to remove unnecessary instances from the DataModel. If a plugin does not clean up properly, the old copies will remain. When this occurs, users may be forced to close and reopen the place which is a bad user experience.
Plugin-related instances such as PluginToolbarButtons, DockWidgetPluginGuis, and PluginGuis are automatically cleaned up when the plugin is unloaded so there is no need to remove them.