PluginGui

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
No replicado

PluginGui es una clase abstracta para GUI que permite la pantalla de GuiObjects en varios widgets de Roblox Studio. A partir de ahora, el único tipo de PluginGui disponible es DockWidgetPluginGui, pero puede haber más en el futuro!

Resumen

Propiedades

Propiedades heredados de LayerCollectorPropiedades heredados de GuiBase2d

Métodos

Eventos

Eventos heredados de GuiBase2d

Propiedades

Title

Leer paralelo

El título que se muestra por encima del contenido del PluginGui . Por defecto, vacía la cadena.

Métodos

BindToClose

void

Esta función vincula una función a PluginGui botón de cierre, sobrescribiendo el comportamiento predeterminado.

Por defecto, cuando el usuario hace clic en el botón 'x' en la esquina superior derecha de la PluginGui la propiedad Enabled está configurada como falsa , cerrando la ventana. Cuando se enlaza una función personalizada usando BindToClose este comportamiento se overwrite, permitiéndote ver si el usuario realmente quiere

Dado que el comportamiento de cierre predeterminado está sobrescrito por esta función, deberás configurar el PluginGui para cerrar manualmente estableciendo PluginGui.Enabled a falso . Por ejemplo, en el siguiente ejemplo, los usuarios deben hacer clic en un botón de confirmación para cerrar la Interfaz gráfica (o GUI):


local closing = false
pluginGui:BindToClose(function()
-- asegúrese de que no hayamos ya hecho un botón
if closing then
return
end
closing = true
-- crear botón de confirmación
local confirmButton = Instance.new("TextButton")
confirmButton.AnchorPoint = Vector2.new(0.5, 0.5)
confirmButton.Size = UDim2.new(0.5, 0, 0.5, 0)
confirmButton.Position = UDim2.new(0.5, 0, 0.5, 0)
confirmButton.BackgroundColor3 = Color3.new(1, 0, 0)
confirmButton.Text = "Close?"
confirmButton.Parent = pluginGui
-- escuchar por hcer clic
confirmButton.Activated:Connect(function()
-- cerrar el gui
pluginGui.Enabled = false
-- eliminar botón de confirmación
confirmButton:Destroy()
end)
end)

Puede llamar BindToClose sin argumento para 'unbindear' y revertir al comportamiento predeterminado descrito anteriormente. Por ejemplo:


pluginGui:BindToClose()

Véase también:

Parámetros

function: function

La función para vincular el botón de cierre. Si no se especifica ninguna función, entonces cualquier función anteriormente especificada se desvinculará.

Valor predeterminado: "nil"

Devuelve

void

GetRelativeMousePosition

Seguridad del plugin

GetRelativeMousePosition返回鼠标相对于左上角的位置。 PluginGui 的返回值只有在鼠标输入开始在PluginGui上,或者当前鼠标悬停在窗口上时才会更改。


Devuelve

La posición de la pantalla del mouse en relación con el PluginGui en píxeles.

Muestras de código

PluginGui:GetRelativeMousePosition

local RunService = game:GetService("RunService")
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float,
true,
false, -- Enabled state, override
200,
300, -- Size
150,
150 -- Minimum size
)
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
function update()
local v2 = testWidget:GetRelativeMousePosition()
testWidget.Title = ("(%d, %d)"):format(v2.x, v2.y)
end
RunService.Stepped:Connect(update)
update()

Eventos

PluginDragDropped

Seguridad del plugin

PluginDragDropped fue activado cuando el usuario liberó su mouse sobre un PluginGui durante una operación de arrastre iniciada por Plugin:StartDrag() .

Véase también:

Parámetros

dragData: Dictionary

Muestras de código

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)

PluginDragEntered

Seguridad del plugin

PluginDragEntered dispara cuando el mouse del usuario ingresa al PluginGui durante una operación de arrastre iniciada por Plugin:StartDrag() .

Este evento es útil para mostrar una interfaz de usuario "Drop Here" en PluginGuis donde se puede soltar una operación de arrastre. Tal interfaz de usuario debería estar oculta cuando se ejecuta PluginDragLeft o PluginDragDropped .

Véase también:

Parámetros

dragData: Dictionary

Una copia de los datos originalmente enviados a Plugin:StartDrag() .


Muestras de código

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)

PluginDragLeft

Seguridad del plugin

PluginDragLeft se activa cuando el mouse del usuario deja un PluginGui durante una operación de arrastre iniciada por Plugin:StartDrag() .

Este evento y PluginDragDropped son útiles para ocultar una interfaz de usuario "Drop Here" en PluginGuis donde se puede soltar una operación de arrastre. Tal interfaz de usuario debería mostrarse cuando se activa PluginDragEntered .

Véase también:

Parámetros

dragData: Dictionary

Una copia de los datos originalmente enviados a Plugin:StartDrag() .


Muestras de código

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)

PluginDragMoved

Seguridad del plugin

PluginDragMoved fue activado cuando el mouse del usuario se movió dentro de un PluginGui durante una operación de arrastre iniciada por Plugin:StartDrag() .

Véase también:

Parámetros

dragData: Dictionary

WindowFocusReleased

Seguridad del plugin

WindowFocusReleaseD dispara inmediatamente cuando el usuario deja de interactuar con la ventana del PluginGui, generalmente haciendo clic en algo que no está en la ventana. Esto funciona de manera similar al evento de UserInputService.WindowFocusReleased de nombre similar.

Si el enfoque se mueve a otro <a href="/reference/engine/datums"> Class.PluginGui</a> mientras el usuario tenía este PluginGui en el enfoque, entonces este evento se activa antes del evento <a href="/reference/engine/datums"> Class.PluginGui.WindowFocused|WindowFocused</a> del otro. Sin embargo, si la ventana de juego principal se pone en el enfoque, este evento se activa después de <a href="/reference/engine


Muestras de código

Detecting PluginGui Focus State

local info = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 200, 50, 1, 1)
local widget = plugin:CreateDockWidgetPluginGui("TestWidget", info)
local function onFocusReleased()
widget.Title = "I'm not in focus :("
end
local function onFocused()
widget.Title = "I'm in focus :D"
end
widget.WindowFocusReleased:Connect(onFocusReleased)
widget.WindowFocused:Connect(onFocused)

WindowFocused

Seguridad del plugin

WindowFocused fue inmediatamente cuando el usuario comenzó a interactuar con la ventana del PluginGui, generalmente haciendo clic en ella. Esto funciona de manera similar al evento UserInputService.WindowFocused que lleva el mismo nombre. Se inicia antes de cualquier evento GuiObject.InputBegan relacionado con botones del mouse.

Si otro PluginGui está en el enfoque y el usuario enfoque este PluginGui, entonces este evento se activa después del evento WindowFocusReleased del otro. Sin embargo, si la ventana de juego principal estuviera en el enfoque, este evento se activa después del evento después 1>de1> 4>de


Muestras de código

Detecting PluginGui Focus State

local info = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, true, true, 200, 50, 1, 1)
local widget = plugin:CreateDockWidgetPluginGui("TestWidget", info)
local function onFocusReleased()
widget.Title = "I'm not in focus :("
end
local function onFocused()
widget.Title = "I'm in focus :D"
end
widget.WindowFocusReleased:Connect(onFocusReleased)
widget.WindowFocused:Connect(onFocused)