PluginGui
*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.
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
Tytuł wyświetlany powyżej zawartości PluginGui.
Przełącza widoczność tego LayerCollector .
Określa, czy odnowienia LayerCollector (samodzielnie się resetuje i klonuje do postaci gracza PlayerGui) następują za każdym razem, gdy postać gracza się odrodzi.
Kontroluje, jak GuiObject.ZIndex zachowuje się na wszystkich potomkach tego LayerCollector .
Opisuje rzeczywistą pozycję ekranu elementu GuiBase2d w pikselach.
Opisuje rzeczywitą rotację ekranu elementu GuiBase2d w stopniach.
Opisuje rzeczywistą rozdzielczość ekranu elementu GuiBase2d w pikselach.
Gdy ustawiono na true, lokalizacja zostanie zastosowana do tego GuiBase2d i jego potomków.
Odwołanie do LocalizationTable , które ma być użyte do zastosowania automatyzowanej lokalizacji do tego GuiBase2d i jego potomków.
Dostosowuje zachowanie wyboru pada w dół w grze.
Dostosowuje zachowanie wyboru gamepada w lewo.
Dostosowuje zachowanie wyboru gamepada w prawnym kierunku.
Dostosowuje zachowanie wyboru gamepada w kierunku góry.
Umożliwia dostosowanie ruchu wyboru gamepada.
Metody
Wiąże funkcję z przyciskiem zamknięcia PluginGui, który zastępuje domyślne zachowanie.
Zwraca pozycję myszy względem PluginGui.
Zdarzenia
Wystrzeliwuje, gdy użytkownik uwalnia mysz podczas przewijania nad PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().
Wystrzeliwuje, gdy mysz użytkownika wchodzi do PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().
Wystrzeliwuje, gdy mysz użytkownika opuści PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().
Wystrzeliwuje, gdy mysz użytkownika porusza się w PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().
Wystrzeliwuje, gdy użytkownik przestaje interakcować z oknem PluginGui.
Wystrzeliwuje, gdy użytkownik zaczyna interakcję z oknem PluginGui.
- SelectionChanged(amISelected : boolean,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Wybucha, gdy wybór gamepada przenosi się do, opuszcza lub zmienia w ramach połączonego GuiBase2d lub dowolnego potomka GuiObjects.
Właściwości
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:
- Plugin:CreateDockWidgetPluginGui() do stworzenia PluginGui
- DataModel:BindToClose() , które można użyć do wiązania funkcji z końcem gry i nie należy ich mylić z tą funkcją
Parametry
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.
Zwroty
GetRelativeMousePosition
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
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
PluginDragDropped wybucha, gdy użytkownik uwalnia mysz nad PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag() .
Zobacz także:
Parametry
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".
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 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
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".
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 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
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".
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 wystrzeliwuje się, gdy mysz użytkownika porusza się w ramach PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag() .
Zobacz także:
Parametry
WindowFocusReleased
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.
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
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.
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)