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 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
Tytuł, który jest wyświetlany nad treściami PluginGui .
Włącza/Wyłącza widoczność tego LayerCollector .
Określa, czy LayerCollector zostanie zresetowany (usuwa siebie i klonuje się do gracza w PlayerGui ) za każdym razem, gdy gracz odzyskuje postać.
Kontroluje, jak GuiObject.ZIndex zachowuje się na wszystkich potomnych tego LayerCollector .
Opisuje rzeczywistą pozycję ekranu elementu UI, w pikselach.
Opisuje rzeczywistą rotację ekranu elementu UI, w stopniach.
Opisuje rzeczywisty rozmiar ekranu elementu UI, w pikselach.
Ustawione na prawdę, lokalizacja zostanie zastosowana do tego GuiBase2d i jego potomnych.
Odnośnik do LocalizationTable używany do zastosowania automatycznej lokalizacji do tego GuiBase2d i jego potomnych.
Dostosowuje zachowanie wyboru gry w dół.
Dostosuj zachowanie selekcji sterowania w lewym kierunku.
Dostosuj zachowanie selekcji gry w odpowiednim kierunku.
Dostosowuje zachowanie wyboru gry w górę.
Umożliwia dostosowanie ruchu wyboru gry.
Metody
Związuje funkcję z przyciskiem zamknięcia PluginGui , nadając preferowanym zachowaniu nadrzędność.
Zwraca pozycję myszy w stosunku do PluginGui.
Zdarzenia
Wystąpi, gdy użytkownik uwolni myszkę, gdy przytrzyma myszkę nad Plugin:StartDrag() podczas operacji przeciągania.
Wystąpi, gdy myszka użytkownika wejdzie do PluginGui podczas operacji拖动开始Plugin:StartDrag() .
Wystąpi, gdy myszka użytkownika opuści PluginGui podczas operacji拖动, zaczętej przez Plugin:StartDrag() .
Wystąpi, gdy myszka użytkownika porusza się w PluginGui podczas operacji拖动开始 Plugin:StartDrag() .
Wystąpi, gdy użytkownik przestanie interagować z oknem PluginGui.
Wystąpi, gdy użytkownik zaczną interagować z oknem PluginGui.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Występuje, gdy selekcja gamepad'a przesuwa się do, wychodzi lub zmienia w ciągu połączonego GuiBase2d lub dowolnego potomnego GuiObjects.
Właściwości
Metody
BindToClose
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ż:
- Plugin:CreateDockWidgetPluginGui() do stworzenia PluginGui
- DataModel:BindToClose() , który można użyć do wiązania funkcji z końcem gry i nie należy go mylić z tą funkcją
Parametry
Funkcja do wiązania przycisku zamknięcia. Jeśli funkcja nie jest określona, to poprzednio określona funkcja zostanie odłączona.
Zwroty
GetRelativeMousePosition
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
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 uruchamia się, gdy użytkownik uwalnia swoją myszkę nad PluginGui podczas operacji przeciągania rozpoczętej przez Plugin:StartDrag().
Zobacz również:
Parametry
Przykłady kodu
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 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
Kopia danych pierwotnie przesłanych do Plugin:StartDrag() .
Przykłady kodu
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 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
Kopia danych pierwotnie przesłanych do Plugin:StartDrag() .
Przykłady kodu
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 uruchamia się, gdy myszka użytkownika porusza się w PluginGui podczas operacji拖动, która została uruchomiona przez Plugin:StartDrag() .
Zobacz również:
Parametry
WindowFocusReleased
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
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
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
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)