PluginGui

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Nicht repliziert

PluginGui ist eine abstrakte Klasse für GUI, die die Anzeige von GuiObjects in verschiedenen Roblox Studio-Wer widgets erlaubt. Derzeit gibt es nur die verfügbare PluginGui-Typ ist DockWidgetPluginGui, aber es könnte mehr in der Zukunft geben!

Zusammenfassung

Eigenschaften

Eigenschaften von LayerCollector übernommenEigenschaften von GuiBase2d übernommen

Methoden

Ereignisse

Ereignisse von GuiBase2d übernommen

Eigenschaften

Title

Parallel lesen

Der Titel, der über den Inhalt des PluginGui . Standard dahin ist, leere Strings zu löschen.

Methoden

BindToClose

void

Diese Funktion bindet eine Funktion an den PluginGui Schaltfläche, die das Standardverhalten überschreibt.

Standardmäßig, wenn der Benutzer auf die Schaltfläche 'x' in der oberen rechten Ecke des PluginGui klickt, wird die Eigenschaft Enabled auf false gesetzt, wodurch das Fenster geschlossen wird. Wenn eine benutzerdefinierte Funktion mit BindToClose gebunden wird, wird dieses Verhalten überschrieben

Da das Standard-Schließverhalten durch diese Funktion überschrieben wird, musst du das PluginGui manuell schließen, indem du PluginGui.Enabled auf false konfigurierst. Zum Beispiel, in dem folgenden Snippet müssen Benutzer auf eine Bestätigungsschaltfläche klicken, um die grafische Benutzeroberflächezu schließen:


local closing = false
pluginGui:BindToClose(function()
-- stellen sie sicher, dass wir keine schaltfläche bereits gemacht haben
if closing then
return
end
closing = true
-- erstellen-bestätigung-button
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
-- auf klickenhören
confirmButton.Activated:Connect(function()
-- schließe die gui
pluginGui.Enabled = false
-- entfernen sie die bestätigungsschaltfläche
confirmButton:Destroy()
end)
end)

Sie können BindToClose mit keinem Argument auf 'unbind' aufrufen und zum Standardverhalten oben zurückkehren. Zum Beispiel:


pluginGui:BindToClose()

Siehe auch:

Parameter

function: function

Die Funktion, der der Schaltfläche "Schließen" zugewiesen ist. Wenn keine Funktion angegeben wird, wird jede vorher angegebene Funktion aufgehoben.

Standardwert: "nil"

Rückgaben

void

GetRelativeMousePosition

Plugin-Sicherheit

GetRelativeMousePosition gibt die Position der Maus im Verhältnis zu der oberen linken Ecke des PluginGui zurück. Der zurückgegebene Wert ändert sich nur, wenn eine Maus-Eingabe auf dem PluginGui beginnt, oder wenn die Maus derzeit über dem Fenster schwebt.


Rückgaben

Die Bildschirmposition der Maus in Bezug auf die PluginGUI in Pixel.

Code-Beispiele

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

Ereignisse

PluginDragDropped

Plugin-Sicherheit

PluginDragDropped startet, wenn der Benutzer seine Maus über ein PluginGui während einer Drag-Operation, die von Plugin:StartDrag() gestartet wurde, zieht.

Siehe auch:

Parameter

dragData: Dictionary

Code-Beispiele

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

Plugin-Sicherheit

PluginDragEntered startet, wenn die Maus des Benutzers die PluginGui während einer Drag-Operation, die von Plugin:StartDrag() gestartet wurde, betritt.

Dieses Ereignis ist nützlich, um eine "Drop Here"-Benutzeroberfläche auf PluginGuis anzuzeigen, auf der ein Drag-Operation angewendet werden kann. Solche eine Benutzeroberfläche sollte ausgeblendet werden, wenn entweder PluginDragLeft oder PluginDragDropped initiierenaktiviert sind.

Siehe auch:

Parameter

dragData: Dictionary

Eine Kopie der ursprünglichen Daten an Class.Plugin:StartDrag() .


Code-Beispiele

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

Plugin-Sicherheit

PluginDragLeft wird ausgelöst, wenn die Maus des Benutzers eine PluginGui während einer Drag-Operation, die von Plugin:StartDrag() gestartet wurde, verlässt.

Dieses Ereignis und PluginDragDropped sind nützlich, um eine "Drop Here"-Benutzeroberfläche auf PluginGuis zu verbergen, bei der ein Drag-Operation fallen kann. Solche Benutzeroberflächen sollten angezeigt werden, wenn entweder PluginDragEntered feuert.

Siehe auch:

Parameter

dragData: Dictionary

Eine Kopie der ursprünglichen Daten an Class.Plugin:StartDrag() .


Code-Beispiele

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

Plugin-Sicherheit

PluginDragMoved feuert ab, wenn die Maus des Benutzers innerhalb einer PluginGui -Drag-Operation, die von Plugin:StartDrag() gestartet wurde, bewegt wird.

Siehe auch:

Parameter

dragData: Dictionary

WindowFocusReleased

Plugin-Sicherheit

WindowFocusRelease feuert sofort ab, wenn der Benutzer aufhört, mit dem Fenster von PluginGui zu interagieren, normalerweise indem er auf etwas nicht im Fenster klickt. Dies funktioniert ähnlich wie das entsprechenden UserInputService.WindowFocusReleased -Ereignis.

Wenn der Fokus auf ein anderes PluginGui zieht, während der Benutzer diesen PluginGui in Fokus hatte, dann wird dieses Ereignis ausgelöst, bevor das andere WindowFocused -Ereignis. Wenn das Hauptspielfenster in Fokus gesetzt wird, wird dieses Ereignis ausgelöst, nach dem


Code-Beispiele

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

Plugin-Sicherheit

WindowFocused feuert sofort ab, wenn der Benutzer mit dem Fenster von PluginGui interagiert, normalerweise indem er darauf klickt. Dies funktioniert ähnlich wie das entsprechend namensgebene UserInputService.WindowFocused -Ereignis. Es feuert vor den ähnlich namensgebenden GuiObject.InputBegan -Ereignissen ab.

Wenn ein weiterer PluginGui in den Fokus und der Benutzer diesen PluginGui fokussiert, wird dieses Ereignis nach dem Ereignis WindowFocusReleased des anderen ausgelöst. Wenn das Hauptspielfenster in Fokus war, wird dieses Ereignis nach 1> Class.UserInputService.WindowFocusRelease


Code-Beispiele

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)