PluginGui

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Bez replikacji

PluginGui jest abstrakcyjną klasą dla interfejsów, które umożliwiają wyświetlanie GuiObjects w różnych widgetach Roblox Studio.Na chwilę obecną jedynym dostępnym typem PluginGui jest DockWidgetPluginGui, ale może być więcej w przyszłości!

Podsumowanie

Właściwości

Właściwości odziedziczeni z: LayerCollectorWłaściwości odziedziczeni z: GuiBase2d

Metody

Zdarzenia

Zdarzenia odziedziczeni z: GuiBase2d

Właściwości

Title

Odczyt równoległy

Tytuł wyświetlany powyżej zawartości PluginGui . Domyślnie pusty ciąg znaków.

Metody

BindToClose

()

Funkcja ta wiąże funkcję z przyciskiem zamknięcia PluginGui, zastępując domyślne zachowanie.

Domyślnie, gdy użytkownik kliknie przycisk 'x' w prawym górnym rogu PluginGui właściwości Enabled zostanie ustawiona na fałsz, zamykając okno.Gdy funkcja niestandardowa jest wiązana za pomocą BindToClose zachowanie to jest zastąpione, umożliwiając sprawdzenie, czy użytkownik naprawdę chce zamknąć okno lub dać mu możliwość zapisania pracy.

Ponieważ domyślne zachowanie zamykania jest zastąpione przez tę funkcję, musisz skonfigurować PluginGui, aby zamknąć ręcznie, ustawiając PluginGui.Enabled na fałsz.Na przykład w poniższym fragmencie użytkownicy muszą kliknąć przycisk potwierdzający, aby zamknąć interfejs użytkownika:


local closing = false
pluginGui:BindToClose(function()
-- upewnij się, że nie stworzyliśmy już przycisku
if closing then
return
end
closing = true
-- stwórz potwierdź przycisk
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
-- słuchaj klikać
confirmButton.Activated:Connect(function()
-- zamknij interfejs
pluginGui.Enabled = false
-- usuń potwierdzający przycisk
confirmButton:Destroy()
end)
end)

Możesz wezwać BindToClose bez argumentu, aby "odwiązać" i przywrócić do domyślnego zachowania opisanego powyżej. Na przykład:


pluginGui:BindToClose()

Zobacz także:

Parametry

function: function

Funkcja, do której można przypiąć przycisk zamknięcia. Jeśli nie zostanie określona żadna funkcja, zostanie odłączona wcześniej określona funkcja.

Wartość domyślna: "nil"

Zwroty

()

GetRelativeMousePosition

Zabezpieczenia dodatku plug-in

GetRelativeMousePosition zwraca pozycję myszy względem lewego górnego rogu PluginGui .Zwrócona wartość zmienia się tylko wtedy, gdy wejście myszy rozpoczęło się na PluginGui, lub gdy mysz obecnie przewija się nad oknem.


Zwroty

Pozycja ekranu myszy względem PluginGui w pikselach.

Przykłady kodu

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

Zdarzenia

PluginDragDropped

Zabezpieczenia dodatku plug-in

PluginDragDropped wybucha, gdy użytkownik uwalnia mysz nad PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag() .

Zobacz także:

Parametry

dragData: Dictionary

Przykłady kodu

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".

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

Zabezpieczenia dodatku plug-in

PluginDragEntered wystrzeliwuje się, gdy mysz użytkownika wchodzi do PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().

To wydarzenie jest przydatne do wyświetlania interfejsu "Wyrzuć tutaj" na PluginGuis, gdzie można upuścić operację przeciągania.Taka interfejs powinna być ukryta, gdy PluginDragLeft lub PluginDragDropped wybuchnie.

Zobacz także:

Parametry

dragData: Dictionary

Kopia danych pierwotnie przekazanych do Plugin:StartDrag().


Przykłady kodu

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".

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

Zabezpieczenia dodatku plug-in

PluginDragLeft wystrzeliwuje się, gdy mysz użytkownika opuści PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().

To wydarzenie i PluginDragDropped są przydatne do ukrycia interfejsu "Wyrzuć tutaj" na PluginGuis, gdzie można upuścić operację przeciągania.Taka interfejs powinna być wyświetlana, gdy PluginDragEntered.

Zobacz także:

Parametry

dragData: Dictionary

Kopia danych pierwotnie przekazanych do Plugin:StartDrag().


Przykłady kodu

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".

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

Zabezpieczenia dodatku plug-in

PluginDragMoved wystrzeliwuje się, gdy mysz użytkownika porusza się w ramach PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag() .

Zobacz także:

Parametry

dragData: Dictionary

WindowFocusReleased

Zabezpieczenia dodatku plug-in

WindowFocusReleased natychmiast się pali, gdy użytkownik przestaje interakować z oknem PluginGui, zwykle klikając coś, co nie jest w oknie.Funkcje te działają podobnie do podobnie nazywanego wydarzenia UserInputService.WindowFocusReleased .

Jeśli skupienie przenosi się do innego PluginGui, podczas gdy użytkownik miał ten PluginGui w skupieniu, to wydarzenie wystrzeli przed wydarzeniem drugiego WindowFocused.Jeśli jednak główne okno gry jest w stanie skupienia, to wydarzenie po UserInputService.WindowFocused uruchamia się po tym.


Przykłady kodu

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.

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

Zabezpieczenia dodatku plug-in

Skupienie okna natychmiast rozpala się, gdy użytkownik zaczyna interakcję z oknem PluginGui, zwykle klikając w nie.Funkcje te działają podobnie do podobnie nazywanego wydarzenia UserInputService.WindowFocused .Wysyła się przed jakimkolwiek GuiObject.InputBegan wydarzeniem związanym z przyciskami myszy.

Jeśli inny PluginGui jest w focusie, a użytkownik skupia się na tym PluginGui, to wydarzenie uruchamia się po wydarzeniu drugiego WindowFocusReleased.Jednak jeśli główne okno gry było w focusie, to wydarzenie wystrzeliwuje po .


Przykłady kodu

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.

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)