PluginGui

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Não 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!

Resumo

Propriedades

Propriedades herdados de LayerCollectorPropriedades herdados de GuiBase2d

Métodos

Eventos

Eventos herdados de GuiBase2d

Propriedades

Title

Ler Parallel

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 Padrão: "nil"

Devolução

void

GetRelativeMousePosition

Segurança do plugin

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


Devolução

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

Amostras 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

Segurança do 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

Amostras 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

Segurança do 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() .


Amostras 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

Segurança do 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() .


Amostras 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

Segurança do 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

Segurança do 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


Amostras 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

Segurança do 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


Amostras 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)