PluginGui
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
PluginGui là một lớp tổng quát cho GUIs cho phép hiển thị của GuiObjects trong các widget Roblox Studio khác nhau. Hiện tại, loại PluginGui duy nhất có sẵn là DockWidgetPluginGui, nhưng có thể có nhiều hơn trong tương lai!
Tóm Tắt
Thuộc Tính
Tiêu đề được hiển thị trên các nội dung của PluginGui .
Bật/tắt sự hiển thị của thành phần này.
Xác định nếu LayerCollector được đặt lại (xóa bản thân và sao chép lại vào PlayerGui của người chơi mỗi khi nhân vật người chơi respawns).
Điều khiển cách GuiObject.ZIndex hành xử trên tất cả các con cháu của this LayerCollector .
Mô tả vị trí màn hình thực tế của một thành phần UI, bằng cách đếm các pixel.
Mô tả sự quay màn hình thực tế của một thành phần UI, bằng độ.
Mô tả kích thước màn hình thực tế của một thành phần UI, bằng các pixel.
Khi đặt về true, localization sẽ được áp dụng cho GuiBase2d và những con cháu của nó.
Một tham khảo đến một LocalizationTable để ứng dụng hóa học hóa toàn bộ vào GuiBase2d và các con cháu của nó.
Tùy chỉnh hành vi lựa chọn gamepad ở hướng dưới.
Tùy chỉnh hành vi lựa chọn gamepad ở hướng bên trái.
Tùy chỉnh hành vi lựa chọn gamepad ở hướng phải.
Tùy chỉnh hành vi lựa chọn gamepad trong hướng lên.
Cho phép tùy chỉnh chuyển động của nút gamepad.
Phương Pháp
Làm cho một chức năng liên quan đến nút đóng của PluginGui , khiến nó không hoạt động bình thường.
Trả vị trí của chuột so với PluginGui.
Sự Kiện
Làm nổ khi người dùng thả chuột khi giữ chuột trên một nút bấm chuột trong khi hoạt động kéo dài bởi Plugin:StartDrag() .
Lửa khi chuột người dùng nhập vào PluginGui trong một hoạt động kéo dài bởi Plugin:StartDrag() .
Khi người dùng rời khỏi PluginGui trong một hoạt động kéo dài bởi Plugin:StartDrag() .
Bắt đầu khi người dùng di chuyển chuột trong một PluginGui khi đang kéo dùng Plugin:StartDrag() .
Lửa khi người dùng dừng tương tác với cửa sổ của PluginGui.
Lửa khi người dùng bắt đầu tương tác với cửa sổ của PluginGui.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Kích hoạt khi lựa chọn gamepad di chuyển đến, rời đi hoặc thay đổi trong khu vực GuiBase2d hoặc bất kỳ con cháu GuiObjects kế tiếp.
Thuộc Tính
Phương Pháp
BindToClose
Hàm này liên kết một hàm với nút đóng PluginGui , hơn cả hành vi mặc định.
Bởi mặc định, khi người dùng nhấp vào nút 'x' ở góc trên phải của PluginGui , thì Enabled được đặt false , đóng cái cửa sổ. Khi một chức
Vì hành động đóng mặc định được quản lý bởi chức năng này, bạn sẽ cần phải tùy chỉnh PluginGui để đóng mặc định bằng cách thiết lập PluginGui.Enabled để false . Ví dụ, trong
local closing = false
pluginGui:BindToClose(function()
-- đảm bảo chúng tôi chưa tạo một nút
if closing then
return
end
closing = true
-- tạo nút xác nhận
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
-- lắng nghe cho nhấp chuột
confirmButton.Activated:Connect(function()
-- đóng gui
pluginGui.Enabled = false
-- loại bỏ nút xác nhận
confirmButton:Destroy()
end)
end)
Bạn có thể gọi BindToClose mà không có argument để 'unbind' và quay về hành vi mặc định được mô tả ở trên. Ví dụ:
pluginGui:BindToClose()
Xem thêm:
- Plugin:CreateDockWidgetPluginGui() để tạo một PluginGui
- DataModel:BindToClose() , which can be used to bind a function to the game ending và không nên lẫn lộn với chức năng này
Tham Số
Hàm để kết hợp nút đóng với. Nếu không có hàm được định nghĩa thì bất kỳ hàm đã được định nghĩa trước đó sẽ bị bỏ bị.
Lợi Nhuận
GetRelativeMousePosition
GetRelativeMousePosition trả về vị trí của chuột so với góc trên cùng bên trái của Class.PluginGui . Giá trị trả lại thay đổi chỉ nếu chuột bắt đầu nhập력 vào trên PluginGui, hoặc nếu chuột hiện đang hover trên cửa sổ.
Lợi Nhuận
Vị trí màn hình của chuột so với PluginGui bằng các kí tự.
Mẫu mã
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()
Sự Kiện
PluginDragDropped
PluginDragDropped bắt đầu khi người dùng thả chuột trên một PluginGui khi một hoạt động kéo chuột đã được khởi chạy bởi Plugin:StartDrag() .
Xem thêm:
Tham Số
Mẫu mã
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 bắt đầu khi chuột người dùng nhập vào PluginGui trong một cuộc kéo dài bởi Plugin:StartDrag() .
Sự kiện này hữu ích để hiển thị một UI "Drop Here" trên PluginGuis nơi một hoạt động kéo có thể được thả. Một UI như vậy nên được ẩn khi hoặc PluginDragLeft hoặc PluginDragDropped bị lỗi.
Xem thêm:
Tham Số
Một bản sao dữ liệu ban đầu đã được gửi đến Plugin:StartDrag() .
Mẫu mã
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 bắt đầu khi người dùng rời khỏi PluginGui trong một hoạt động kéo khi bắt đầu bởi Plugin:StartDrag() .
Sự kiện này và PluginDragDropped là hữu ích để ẩn một UI "Drop Here" trên PluginGuis nơi một hoạt động kéo có thể được thả. Một UI như vậy nên được hiển thị khi một trong những hồ sơ hoạt động được kích hoạ
Xem thêm:
Tham Số
Một bản sao dữ liệu ban đầu đã được gửi đến Plugin:StartDrag() .
Mẫu mã
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 bắt đầu khi chuột người dịch chuyển trong một PluginGui trong một hoạt động kéo dài bởi Plugin:StartDrag() .
Xem thêm:
Tham Số
WindowFocusReleased
WindowFocusRelease된 hạng nhanh chóng khi người dùng ngừng tương tác với cửa sổ PluginGui, thường bằng cách nhấp vào một cái gì đó không ở trong cửa sổ. Điều này hoạt động tương tự như các sự kiện UserInputService.WindowFocusReleased tương tự.
Nếu focus đang di chuyển sang một PluginGui khác trong khi người dùng có PluginGui này trong focus, thì sự kiện này sẽ bắt đầu trước sự kiện WindowFocused của người chơi chính. Tuy
Mẫu mã
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 bắt lửa ngay khi người dùng bắt đầu tương tác với cửa sổ PluginGui, thường bằng cách nhấp vào nó. Điều này hoạt động tương tự như sự kiện UserInputService.WindowFocused được đề cập ở trên. Nó bắ
Nếu một Class.PluginGui khác đang ở trong khu vực tập trung và người dùng tập trung vào PluginGui này, thì sự kiện này sẽ kích hoạt sau sự kiện WindowFocusReleased của người chủ. Tuy nhiên, nếu c
Mẫu mã
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)