PluginGui

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Non Replicato

PluginGui è una classe抽atta per GUI che consente la visualizzazione di GuiObjects in varie widget Roblox Studio. Al momento attuale, l'unico tipo disponibile di PluginGui è DockWidgetPluginGui , ma potrebbe esserci di più in futuro!

Sommario

Proprietà

Proprietà provenienti da LayerCollectorProprietà provenienti da GuiBase2d

Metodi

Eventi

Eventi provenienti da GuiBase2d

Proprietà

Title

Lettura Parallela

Il titolo che viene visualizzato sopra i contenuti del PluginGui . Predefiniti per vuoto la Stringa.

Metodi

BindToClose

void

Questa funzione lega una funzione al pulsante di chiusura PluginGui, sovrascrivendo il comportamento predefinito.

Per impostazione predefinita, quando l'utente fa clic sul pulsante 'x' nell'angolo in alto a destra di PluginGui la proprietà Enabled è impostata su false , chiudendo la finestra. Quando viene utilizzata una funzione personalizzata usando BindToClose questo comportamento viene sovrascritto, in modo che tu possa controll

Poiché il comportamento di chiusura predefinito è sovrascritto da questa funzione, dovrai configurare il PluginGui per chiudere manualmente impostando PluginGui.Enabled su false . Ad esempio, nel seguente script gli utenti sono richiesti di fare clic su un pulsante conferma per chiudere la GUI or Intefaccia grafica utente:


local closing = false
pluginGui:BindToClose(function()
-- assicurati che non abbiamo già fatto un pulsante
if closing then
return
end
closing = true
-- crea pulsante di conferma
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
-- ascolta per cliccare
confirmButton.Activated:Connect(function()
-- chiudi la gui
pluginGui.Enabled = false
-- rimuovi pulsante conferma
confirmButton:Destroy()
end)
end)

Puoi chiamare BindToClose senza argomento per 'unbind' e tornare al comportamento predefinito descritti sopra. Ad esempio:


pluginGui:BindToClose()

Vedi anche:

Parametri

function: function

La funzione per associare il pulsante di chiusura. Se nessuna funzione è specificata, allora qualsiasi funzione precedentemente specificata verrà disattivata.

Valore predefinito: "nil"

Restituzioni

void

GetRelativeMousePosition

Sicurezza Plugin

GetRelativeMousePosition restituisce la posizione del mouse rispetto all'angolo in alto a sinistra del PluginGui . Il valore restituito cambia solo se un input del mouse inizia sul PluginGui, o se il mouse si trova attualmente sopra la finestra.


Restituzioni

La posizione dello schermo del mouse rispetto al PluginGui in pixel.

Campioni di codice

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

Eventi

PluginDragDropped

Sicurezza Plugin

PluginDragDropped viene attivato quando l'utente rilascia il mouse su un PluginGui durante un'operazione di trascinamento iniziata da Plugin:StartDrag() .

Vedi anche:

Parametri

dragData: Dictionary

Campioni di codice

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

Sicurezza Plugin

PluginDragEntered fuoriesce quando il mouse dell'utente entra nel PluginGui durante un'operazione di trascinamento iniziata da Plugin:StartDrag() .

Questo evento è utile per mostrare un'interfaccia utente "Drop Here" su PluginGuis in cui un'operazione di trascinamento può essere trascinata. Tale interfaccia utente dovrebbe essere nascosta quando sia PluginDragLeft o PluginDragDropped Lanciare.

Vedi anche:

Parametri

dragData: Dictionary

Una copia dei dati originariamente passati a Plugin:StartDrag() .


Campioni di codice

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

Sicurezza Plugin

PluginDragLeft viene attivato quando il mouse dell'utente lascia un PluginGui durante un'operazione di trascinamento iniziata da Plugin:StartDrag() .

Questo evento e PluginDragDropped sono utili per nascondere un'interfaccia utente "Drop Here" su PluginGuis in cui un'operazione di trascinamento può essere rilasciata. Tale interfaccia utente dovrebbe essere mostrata quando si attiva PluginDragEntered .

Vedi anche:

Parametri

dragData: Dictionary

Una copia dei dati originariamente passati a Plugin:StartDrag() .


Campioni di codice

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

Sicurezza Plugin

PluginDragMoved fuoriesce quando il mouse dell'utente si muove all'interno di un PluginGui durante un'operazione di trascinamento iniziata da Plugin:StartDrag() .

Vedi anche:

Parametri

dragData: Dictionary

WindowFocusReleased

Sicurezza Plugin

WindowFocusReleaseFocus viene attivato immediatamente quando l'utente smette di interagire con la finestra PluginGui, di solito facendo clic su qualcosa che non è nella finestra. Questo funziona allo stesso modo come l'evento UserInputService.WindowFocusReleased .

Se il focus si sposta su un altro PluginGui mentre l'utente aveva questo PluginGui in focus, allora questo evento si attiva prima dell'evento WindowFocused dell'altro. Tuttavia, se la finestra di gioco principale viene posta in focus, questo evento si attiva dopo dopo 1> Class.UserInputService.WindowFocused


Campioni di codice

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

Sicurezza Plugin

WindowFocused fires immediately when the user starts interacting with the PluginGui's window, usually by clicking on it. This functions works similarly to the similarly-named UserInputService.WindowFocused event. It fires before any GuiObject.InputBegan events related to mouse buttons.

Se un altro PluginGui è in focus e l'utente focus questo PluginGui, allora questo evento si attiva dopo l'evento WindowFocusReleased dell'altro. Tuttavia, se la finestra di gioco principale era in focus, questo evento si attiva dopo 1> Class.UserInputService.WindowFocusRelease


Campioni di codice

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)