PluginGui

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Non répliqué

PluginGui est une classe abstraite pour les interfaces graphiques qui permettent l'affichage de GuiObjects dans divers widgets Roblox Studio. Aujourd'hui, le seul type de PluginGui disponible est DockWidgetPluginGui, mais il peut y en avoir plus dans l'avenir!

Résumé

Propriétés

Propriétés hérités de LayerCollectorPropriétés hérités de GuiBase2d

Méthodes

Évènements

Évènements hérités de GuiBase2d

Propriétés

Title

Lecture parallèle

Titre qui est affiché au-dessus du contenu du PluginGui . Par défaut, il s'agit d'une chaîne vide.

Méthodes

BindToClose

void

Cette fonction lie une fonction à un bouton de fermeture PluginGui, en remplaçant le comportement par défaut.

Par défaut, lorsque l'utilisateur clique sur le bouton 'x' dans le coin supérieur droit de la PluginGui la propriété Enabled est réglée sur false, ce qui ferme la fenêtre. Lorsqu'une fonction personnalisée est liée à BindToClose, ce comportement est écrasé, ce qui vous permet de vérifier si l'

Comme le comportement de fermeture par défaut est écrasé par cette fonction, vous devrez configurer le PluginGui pour fermer manuellement en définissant PluginGui.Enabled à false. Par exemple, dans le snippet ci-dessous, les utilisateurs sont requis de cliquer sur un bouton de confirmation pour fermer la interface utilisateur graphique:


local closing = false
pluginGui:BindToClose(function()
-- assurez-vous que nous n'avons pas déjà créé un bouton
if closing then
return
end
closing = true
-- bouton de confirmation de création
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
-- écoutez pour cliquer
confirmButton.Activated:Connect(function()
-- fermer la gui
pluginGui.Enabled = false
-- supprimer bouton de confirmation
confirmButton:Destroy()
end)
end)

Vous pouvez appeler BindToClose sans argument pour « unbind » et revenir au comportement par défaut décrit ci-dessus. Par exemple :


pluginGui:BindToClose()

Voir aussi :

Paramètres

function: function

La fonction à laquelle le bouton de fermeture doit être lié. Si aucune fonction n'est spécifiée, alors toute fonction précédemment spécifiée sera désactivée.

Valeur par défaut : "nil"

Retours

void

GetRelativeMousePosition

Sécurité des plugins

GetRelativeMousePosition renvoie la position de la souris par rapport au coin supérieur gauche de la PluginGui. La valeur renvoyée change seulement si une entrée de souris a commencé sur le PluginGui, ou si la souris est actuellement sur la fenêtre.


Retours

La position de l'écran par rapport à la GUI du plugin en pixels.

Échantillons de code

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

Évènements

PluginDragDropped

Sécurité des plugins

PluginDragDropped se déclenche lorsque l'utilisateur relâche sa souris sur un PluginGui pendant une opération de déplacement commencée par Plugin:StartDrag().

Voir aussi :

Paramètres

dragData: Dictionary

Échantillons de code

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

Sécurité des plugins

PluginDragEntered se déclenche lorsque la souris de l'utilisateur entre dans le PluginGui pendant une opération de déplacement commencée par Plugin:StartDrag().

Cet événement est utile pour afficher une interface utilisateur « Drop Here » sur PluginGuis où une opération de déplacement peut être déposée. Une telle interface devrait être cachée lorsque l'un des PluginDragLeft ou PluginDragDropped lanceren cours d'exécution.

Voir aussi :

Paramètres

dragData: Dictionary

Une copie des données initialement envoyées à Plugin:StartDrag() .


Échantillons de code

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

Sécurité des plugins

PluginDragLeft se déclenche lorsque la souris de l'utilisateur quitte un PluginGui pendant une opération de déplacement commencée par Plugin:StartDrag().

Cet événement et PluginDragDropped sont utiles pour cacher une interface "Drop Here" sur PluginGuis où une opération de déplacement peut être lâché. Une telle interface devrait être affichée lorsque l'un des PluginDragEntered lance un feu.

Voir aussi :

Paramètres

dragData: Dictionary

Une copie des données initialement envoyées à Plugin:StartDrag() .


Échantillons de code

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

Sécurité des plugins

PluginDragMoved se déclenche lorsque la souris de l'utilisateur se déplace dans un PluginGui pendant une opération de déplacement de drag commencée par Plugin:StartDrag() .

Voir aussi :

Paramètres

dragData: Dictionary

WindowFocusReleased

Sécurité des plugins

WindowFocusReleaseD se déclenche immédiatement lorsque l'utilisateur arrête d'interagir avec la fenêtre du plugin, généralement en cliquant sur quelque chose qui n'est pas dans la fenêtre. Cela fonctionne de la même façon que l'événement UserInputService.WindowFocusReleased similaire.

Si la mise en évidence se déplace vers un autre PluginGui pendant que l'utilisateur avait ce PluginGui en évidence, alors cet événement se déclenche avant l'événement WindowFocused de l'autre. Cependant, si la fenêtre de jeu principale est mise en évidence, cet événement se déclenche après 2>Class.UserInputService.WindowFocus


Échantillons de code

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

Sécurité des plugins

WindowFocused fonctionne immédiatement lorsque l'utilisateur commence à interagir avec la fenêtre du PluginGui, généralement en cliquant dessus. Cela fonctionne de la même façon que l'événement UserInputService.WindowFocused similairement nommé. Il s'exécute avant tout événement GuiObject.InputBegan lié aux boutons de la souris.

Si un autre PluginGui est en focus et que l'utilisateur fait en sorte que ce PluginGui, alors cet événement se déclenche après l'événement WindowFocusReleased de l'autre. Cependant, si la fenêtre de jeu principale était en focus, cet événement se déclenche après l'événement 1> Class.UserInputService.WindowFocusRelease


Échantillons de code

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)