PluginGui
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
PluginGui ist eine abstrakte Klasse für GUIs, die die Anzeige von GuiObjects in verschiedenen Roblox Studio- Widgets ermöglichen.Ab sofort ist der einzige verfügbare PluginGui-Typ DockWidgetPluginGui , aber es kann in Zukunft mehr geben!
Zusammenfassung
Eigenschaften
Der Titel, der über den Inhalten der PluginGui angezeigt wird.
Schaltet die Sichtbarkeit dieses LayerCollector um.
Bestimmt, ob die LayerCollector-Reset (sich selbst löscht und wieder klont in den Charakter des Spieler:inPlayerGui ) jedes Mal erfolgt, wenn der Charakter des Spieler:inrespawniert.
Steuert, wie GuiObject.ZIndex sich auf alle Nachkommen dieser LayerCollector verhält.
Beschreibt die tatsächliche Bildschirmposition eines GuiBase2d Elements, in Pixeln.
Beschreibt die tatsächliche Bildschirm rotation eines GuiBase2d Elements, in Grad.
Beschreibt die tatsächliche Bildschirmgröße eines GuiBase2d Elements, in Pixeln.
Wenn es auf true gesetzt wird, wird die Lokalisierung auf dieses GuiBase2d und seine Nachkommen angewendet.
Eine Referenz auf ein LocalizationTable , das verwendet werden soll, um automatisierte Lokalisierung auf dieses GuiBase2d und seine Nachkommen anzuwenden.
Passt das Spielpadauswahlverhalten in die Down-Richtung an.
Passt das Spielpadauswahlverhalten in die linke Richtung an.
Passt das Spielpadauswahlverhalten in die richtige Richtung an.
Passt das Spielpadauswahlverhalten in die Richtung oben an.
Ermöglicht die Anpassung der Gamepad-Auswahlbewegung.
Methoden
Bindet eine Funktion an die Schaltfläche "Schließen" PluginGui, die das Standardverhalten überschreitet.
Gibt die Position der Maus im Verhältnis zum PluginGui zurück.
Ereignisse
Feuert, wenn der Benutzer seine Maus loslässt, während er über ein PluginGui hovert, während eine Drag-Operation von Plugin:StartDrag() gestartet wird.
Feuert, wenn die Maus des Benutzers während einer von Plugin:StartDrag() gestarteten Drag-Operation in ein PluginGui eingreift.
Feuert, wenn die Maus des Benutzers während einer von Plugin:StartDrag() gestarteten Drag-Operation einen PluginGui verlässt.
Feuert, wenn die Maus des Benutzers innerhalb eines PluginGui während einer Drag-Operation von Plugin:StartDrag() bewegt wird.
Feuert, wenn der Benutzer die Interaktion mit dem Fenster des PluginGui beendet.
Feuert, wenn der Benutzer beginnt, mit dem Fenster des PluginGui zu interagieren.
- SelectionChanged(amISelected : boolean,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Feuert, wenn die Auswahl des Gamepads sich auf, verlässt oder ändert innerhalb der verbundenen GuiBase2d oder eines Nachkommens GuiObjects.
Eigenschaften
Methoden
BindToClose
Diese Funktion bindet eine Funktion an die Schaltfläche "Schließen" PluginGui, die das Standardverhalten überschreitet.
Standardmäßig, wenn der Benutzer auf die Schaltfläche 'x' in der oberen rechten Ecke des PluginGui klickt, wird die Eigenschaft Enabled auf falsch gesetzt, wodurch das Fenster geschlossen wird.Wenn eine benutzerdefinierte Funktion mit BindToClose gebunden wird, wird dieses Verhalten überschrieben, so dass Sie überprüfen können, ob der Benutzer wirklich das Fenster schließen oder ihm die Möglichkeit geben möchte, seine Arbeit zu speichern.
Da das Standard-Schließverhalten durch diese Funktion überschrieben wird, musst du die PluginGui so konfigurieren, dass sie manuell geschlossen wird, indem du PluginGui.Enabled auf falsch festlegst.Zum Beispiel müssen Benutzer in dem folgenden Snippet einen Bestätigungsknopf anklicken, um die grafische Benutzeroberflächezu schließen:
local closing = false
pluginGui:BindToClose(function()
-- stellen sie sicher, dass wir noch keinen button gemacht haben
if closing then
return
end
closing = true
-- bestätigungs-button erstellen
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 das gui
pluginGui.Enabled = false
-- bestätigungs-button entfernen
confirmButton:Destroy()
end)
end)
Du kannst BindToClose ohne Argument aufrufen, um "zu entfernen" und zum beschriebenen Standardverhalten zurückzukehren. Zum Beispiel:
pluginGui:BindToClose()
Siehe auch:
- Plugin:CreateDockWidgetPluginGui() um eine PluginGui zu erstellen
- DataModel:BindToClose() , die verwendet werden kann, um eine funktion mit dem spielende zu verknüpfen und sollte nicht mit dieser funktion verwechselt werden
Parameter
Die Funktion, an die der Schließen-Button gebunden wird. Wenn keine Funktion angegeben wird, wird jede zuvor angegebene Funktion aufgelöst.
Rückgaben
GetRelativeMousePosition
GetRelativeMousePosition gibt die Position der Maus im Verhältnis zur oberen linken Ecke des PluginGui zurück.Der zurückgegebene Wert ändert sich nur, wenn eine Maus-Eingabe auf dem PluginGui beginnt oder die Maus derzeit über dem Fenster schwebt.
Rückgaben
Die Bildschirmposition der Maus im Verhältnis zum PluginGui in Pixeln.
Code-Beispiele
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
PluginDragDropped feuert ab, wenn der Benutzer seine Maus über einen PluginGui während einer Drag-Operation freigibt, die von Plugin:StartDrag() gestartet wurde.
Siehe auch:
Parameter
Code-Beispiele
This code sample creates two plugin widget windows: a drag source and a drop target. In the source window, the script creates a TextBox and TextButton to allow the user to begin a plugin drag action. The drop target window will display the MimeType of whatever is dragged into it using a TextLabel. If the MimeType is text/plain, it will display the plain text data instead.
To run this code sample as a plugin, paste it into a Script. Then, right-click the script in the Explorer window and choose "Save as Local Plugin".
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
PluginDragEntered feuert ab, wenn die Maus des Benutzers während einer Drag-Operation von PluginGui in Plugin:StartDrag() eintreibt.
Dieses Ereignis ist nützlich für die Anzeige einer "Hier ablegen"-Benutzeroberfläche auf PluginGuis, wo eine Drag-Operation abgeworfen werden kann.Solche UI sollte versteckt werden, wenn entweder PluginDragLeft oder PluginDragDropped initiieren.
Siehe auch:
Parameter
Eine Kopie der Daten, die ursprünglich an Plugin:StartDrag() übermittelt wurden.
Code-Beispiele
This code sample creates two plugin widget windows: a drag source and a drop target. In the source window, the script creates a TextBox and TextButton to allow the user to begin a plugin drag action. The drop target window will display the MimeType of whatever is dragged into it using a TextLabel. If the MimeType is text/plain, it will display the plain text data instead.
To run this code sample as a plugin, paste it into a Script. Then, right-click the script in the Explorer window and choose "Save as Local Plugin".
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
PluginDragLeft feuert ab, wenn die Maus des Benutzers während einer Drag-Operation von PluginGui verlässt, die von Plugin:StartDrag() gestartet wurde.
Dieses Ereignis und PluginDragDropped sind nützlich, um eine "Drop Here"-Benutzeroberfläche auf PluginGuis auszublenden, wo eine Drag-Operation abgeworfen werden kann.Eine solche Benutzeroberfläche sollte angezeigt werden, wenn entweder PluginDragEntered Feuer ausbrechen.
Siehe auch:
Parameter
Eine Kopie der Daten, die ursprünglich an Plugin:StartDrag() übermittelt wurden.
Code-Beispiele
This code sample creates two plugin widget windows: a drag source and a drop target. In the source window, the script creates a TextBox and TextButton to allow the user to begin a plugin drag action. The drop target window will display the MimeType of whatever is dragged into it using a TextLabel. If the MimeType is text/plain, it will display the plain text data instead.
To run this code sample as a plugin, paste it into a Script. Then, right-click the script in the Explorer window and choose "Save as Local Plugin".
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
PluginDragMoved feuert ab, wenn die Maus des Benutzers innerhalb von PluginGui während einer Drag-Operation von Plugin:StartDrag() bewegt wird.
Siehe auch:
Parameter
WindowFocusReleased
WindowFocusReleased feuert sofort ab, wenn der Benutzer aufhört, mit dem Fenster des PluginGui zu interagieren, normalerweise durch Klicken auf etwas, das nicht im Fenster ist.Diese Funktionen funktionieren ähnlich wie das mit ähnlichem Namen benannte UserInputService.WindowFocusReleased.
Wenn sich der Fokus auf ein anderes bewegt, während der Benutzer dieses PluginGui im Fokus hatte, dann wird dieses Ereignis vor dem Ereignis des anderen ausgelöst.Wenn jedoch das Hauptspielfenster in den Fokus gerückt wird, feuert dieses Ereignis nach UserInputService.WindowFocused .
Code-Beispiele
This code sample demonstrates how the focus state of a PluginGui can be tracked using the WindowFocused() and WindowFocusReleased() events. It changes the Title() as the focus state changes.
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
Fensterfokussiert feuert sofort ab, wenn der Benutzer mit dem Fenster des PluginGui interagiert, normalerweise durch Klicken darauf.Diese Funktionen funktionieren ähnlich wie das mit ähnlichem Namen benannte UserInputService.WindowFocused.Es feuert vor allen GuiObject.InputBegan Ereignissen, die sich auf Mausknöpfe beziehen.
Wenn ein anderes PluginGui im Fokus steht und der Benutzer dieses PluginGui fokussiert, dann wird dieses Ereignis nach dem Ereignis des anderen WindowFocusReleased abgefeuert.Wenn jedoch das Hauptspielfenster im Fokus war, feuert dieses Ereignis nach UserInputService.WindowFocusReleased ab.
Code-Beispiele
This code sample demonstrates how the focus state of a PluginGui can be tracked using the WindowFocused() and WindowFocusReleased() events. It changes the Title() as the focus state changes.
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)