PluginGui

Hiển Thị Bản Đã Lỗi Thời

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

Không Thể Tạo
Không Sao Chép

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

  • Đọc Song Song

    Tiêu đề được hiển thị trên các nội dung của PluginGui .

Thuộc Tính kế thừa từ LayerCollectorThuộc Tính kế thừa từ GuiBase2d

Phương Pháp

Sự Kiện

Sự Kiện kế thừa từ GuiBase2d
  • 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

Title

Đọc Song Song

Tiêu đề được hiển thị trên các nội dung của PluginGui . Mặc định để trống dòng chuỗi.

Phương Pháp

BindToClose

void

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:

Tham Số

function: function

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

Giá Trị Mặc Định: "nil"

Lợi Nhuận

void

GetRelativeMousePosition

Bảo Mật Plugin

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ã

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

Sự Kiện

PluginDragDropped

Bảo Mật Plugin

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ố

dragData: Dictionary

Mẫu mã

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

Bảo Mật Plugin

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ố

dragData: Dictionary

Một bản sao dữ liệu ban đầu đã được gửi đến Plugin:StartDrag() .


Mẫu mã

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

Bảo Mật Plugin

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ố

dragData: Dictionary

Một bản sao dữ liệu ban đầu đã được gửi đến Plugin:StartDrag() .


Mẫu mã

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

Bảo Mật Plugin

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ố

dragData: Dictionary

WindowFocusReleased

Bảo Mật Plugin

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ã

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

Bảo Mật Plugin

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ã

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)