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 to abstrakcyjna klasa dla interfejsów użytkownika, które umożliwiają wyświetlenie GuiObjects w różnych wtyczkach Roblox Studio. W chwili obecnej 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ł, który jest wyświetlony nad treścią PluginGui . Domyślnie strona pusta.

Metody

BindToClose

void

Funkcja ta wiąże funkcję z przyciskiem zamknięcia PluginGui , co nadaje zachowanie domyślne.

Domyślnie, gdy użytkownik kliknie przycisk 'x' w górnym prawym rogu PluginGui , Enabled właściwość zostanie ustawiona na fałszywy, zamykając okno. Gdy użytkownia funkcja jest związana z BindToClose zachowanie jest przeszreibane, pozwal

Ponieważ domyślne zachowanie zamknięcia jest przypisane przez tę funkcję, będziesz musiał skonfigurować PluginGui, aby zamknąć go ręcznie, ustawiając PluginGui.Enabled na fałszywy. Na przykład w poniższym przykładzie użytkownicy muszą kliknąć przycisk potwierdzenia, aby zamknąć


local closing = false
pluginGui:BindToClose(function()
-- upewnij się, że nie stworzyliśmy już przycisku
if closing then
return
end
closing = true
-- utwórz przycisk potwierdzenia
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 za klikać
confirmButton.Activated:Connect(function()
-- zamknij gui
pluginGui.Enabled = false
-- usuń przycisk potwierdzenia
confirmButton:Destroy()
end)
end)

Możesz wywołać BindToClose bez argumentu "unbind" i powrócić do opisanego powyżej zachowania domyślnego. Na przykład:


pluginGui:BindToClose()

Zobacz również:

Parametry

function: function

Funkcja do wiązania przycisku zamknięcia. Jeśli funkcja nie jest określona, to poprzednio określona funkcja zostanie odłączona.

Wartość domyślna: "nil"

Zwroty

void

GetRelativeMousePosition

Zabezpieczenia dodatku plug-in

GetRelativeMousePosition返回Class.PluginGui的左上角的相对位置。 Value zmienia tylko wtedy, gdy rozpoczęła się na PluginGui wejście myszy lub gdy myszy jest obecnie nad oknem.


Zwroty

Pozycja ekranowa myszy w stosunku do 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 uruchamia się, gdy użytkownik uwalnia swoją myszkę nad PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().

Zobacz również:

Parametry

dragData: Dictionary

Przykłady kodu

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 uruchamia się, gdy myszka użytkownika wchodzi do PluginGui podczas operacji zapisu zaczętej przez Plugin:StartDrag() .

Ten wątek jest przydatny do wyświetlenia interfejsu "Drop Here" na PluginGuis, gdzie można upuścić operację przeciągania. Takie UI powinno być ukryte, gdy PluginDragLeft lub PluginDragDropped pojawiają się.

Zobacz również:

Parametry

dragData: Dictionary

Kopia danych pierwotnie przesłanych do Plugin:StartDrag() .


Przykłady kodu

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 uruchamia się, gdy myszka użytkownika opuszcza PluginGui podczas operacji拖动, która została uruchomiona przez Plugin:StartDrag() .

Ten wydarzenie i PluginDragDropped są przydatne do ukrycia interfejsu "Drop Here" na PluginGuis, gdzie można upuścić operację przeciągania. Takie interfejs powinno zostać pokazane, gdy PluginDragEntered uruchomiony.

Zobacz również:

Parametry

dragData: Dictionary

Kopia danych pierwotnie przesłanych do Plugin:StartDrag() .


Przykłady kodu

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 uruchamia się, gdy myszka użytkownika porusza się w PluginGui podczas operacji拖动, która została uruchomiona przez Plugin:StartDrag() .

Zobacz również:

Parametry

dragData: Dictionary

WindowFocusReleased

Zabezpieczenia dodatku plug-in

WindowFocusRelease된窗口 skupia się natychmiastowo, gdy użytkownik przestaje interagować z okном PluginGui, zwykle klikając na coś, co nie jest w oknie. To działa podobnie do wydarzenia Class.UserInputService.WindowFocusRelease o nazwie.

Jeśli focus jest poruszany do innego PluginGui gdy użytkownik miał ten PluginGui w focus, to ten ewent zostanie wywołany przed wydarzeniem WindowFocused użytkownika. Jeśli główna okno gry jest postawione w focus, ten ewent zostanie wywołany po


Przykłady kodu

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

WindowFocused działa natychmiastowo, gdy użytkownik zaczyna interagować z oknem PluginGui, zwykle poprzez kliknięcie na nie. Funkcjonuje to samo do wydarzenia UserInputService.WindowFocused . Wykonuje to przed jakimkolwiek innym wydarzeniem GuiObject.InputBegan związanym z przyciskami myszy.

Jeśli inny PluginGui jest w focus i użytkownik skupia tę PluginGui, to ten ewent zostanie uruchomiony po wydarzeniu WindowFocusReleased użytkownika głównego. Jeśli okno główne było w focus, ten ewent zostanie uruchomiony po wydarzeniu after


Przykłady kodu

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)