ShowAsync
This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts.
This member cannot be used in scripts, but is usable in the command bar and plugins.
This function shows the menu at the mouse cursor. It yields until either an item is selected or the menu is closed. The selected action fires its PluginAction/Triggered
event
See also
articles/Intro to Plugins
, an introductory article to plugin use and developmentPluginAction
, an object that represents a generic performable action in Roblox Studio, with no directly associatedToolbar
orButton
.Plugin/CreatePluginAction
, creates a PluginActionPluginMenu/Title
, the text to be displayed when used as a sub menuPluginMenu/Icon
, the icon to be displayed when used as a sub menuPluginMenu/AddAction
, adds the given action to the menuPluginMenu/AddNewAction
, creates a temporary action that is hidden from Studio’s customize shortcuts windowPluginMenu/AddMenu
, adds the given menu as a separatorPluginMenu/AddSeparator
, adds a separator between items in the menuPluginMenu/Clear
, clears the menu
Returns
Return Type | Summary |
---|---|
The |
Code Samples
Creating a PluginMenu and PluginMenuAction
This code sample visualizes how PluginMenu|PluginMenus
and PluginAction|PluginActions
behave when created for a Plugin
. Outside of this example, you should not parent the plugin or its functional components to the game’s workspace.
In order to work as expected, the code block must but pasted into the command bar, but only once. Consecutive attempts at executing the code in the command bar will result in an error because a plugin cannot create more than one PluginMenu with the same id.
After executing the code, changing the created BoolValue
in the game’s workspace via the Explorer window opens the plugin’s menus. Selecting an action from the menus the function connected to the trigger signal.
-- 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)