PluginGui

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Tidak Direplikasi

PluginGui adalah kelas abstrak untuk GUI yang memungkinkan tampilan dari GuiObjects di berbagai Roblox Studio widget. Sejak saat ini, satu-satunya jenis PluginGui yang tersedia adalah DockWidgetPluginGui, tetapi mungkin ada lebih banyak di masa depan!

Rangkuman

Properti

Properti diwarisi dari LayerCollectorProperti diwarisi dari GuiBase2d

Metode

Acara

Acara diwarisi dari GuiBase2d

Properti

Title

Baca Paralel

Judul yang ditampilkan di atas konten PluginGui . Standar untuk menghapus string.

Metode

BindToClose

void

Fungsi ini menyambungkan fungsi ke tombol dekat, PluginGui , menggeser perilaku default.

Secara default, ketika pengguna mengklik tombol 'x' di sudut kanan atas dari PluginGui , property Enabled diatur ke false , menutup jendela. Saat fungsi kustom dibind dengan BindToClose perilaku ini diubah, memungkinkan Anda untuk memeriksa apak

Karena perilaku penutupan default ditulis ulang oleh fungsi ini, Anda harus menyiapkan PluginGui untuk menutup secara manual dengan menetapkan PluginGui.Enabled ke false . Misalnya, dalam snippet di bawah ini pengguna harus mengklik tombol konfirmasi untuk menutup GUI:


local closing = false
pluginGui:BindToClose(function()
-- astikan kita belum membuat tombol
if closing then
return
end
closing = true
-- buat tombol konfirmasi
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
-- dengarkan untuk klik
confirmButton.Activated:Connect(function()
-- tutup gui
pluginGui.Enabled = false
-- hapus tombol konfirmasi
confirmButton:Destroy()
end)
end)

Anda dapat memanggil BindToClose tanpa argument untuk 'unbind' dan kembali ke perilaku default yang dijelaskan di atas. Misalnya:


pluginGui:BindToClose()

Lihat juga:

Parameter

function: function

Fungsi untuk menyambungkan tombol tutup ke. Jika tidak ada fungsi yang ditentukan maka fungsi sebelumnya yang ditentukan akan dihapus.

Nilai Default: "nil"

Memberikan nilai

void

GetRelativeMousePosition

Keamanan Plugin

GetRelativeMousePosition mengembalikan posisi mouse relatif terhadap sudut atas kiri dari PluginGui .Nilai yang dikembalikan berubah hanya jika masukan mouse dimulai di PluginGui, atau jika mouse saat ini mengambang di atas jendela.


Memberikan nilai

Posisi layar mouse relatif terhadap PluginGui dalam pixel.

Contoh Kode

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

Acara

PluginDragDropped

Keamanan Plugin

PluginDragDropped menyetel ulang saat pengguna melepaskan mouse mereka di atas PluginGui selama operasi seret saat dimulai oleh Plugin:StartDrag() .

Lihat juga:

Parameter

dragData: Dictionary

Contoh Kode

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

Keamanan Plugin

PluginDragEntered menyalakan saat mouse pengguna menyentuh PluginGui selama operasi seretan dimulai oleh Plugin:StartDrag() .

Acara ini berguna untuk menampilkan UI "Drop Here" di PluginGuis di mana operasi seret dapat dijatuhkan. Such UI harus disembunyikan ketika PluginDragLeft atau PluginDragDropped fire.

Lihat juga:

Parameter

dragData: Dictionary

Sebuah salinan dari data asli yang dikirim ke Plugin:StartDrag() .


Contoh Kode

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

Keamanan Plugin

PluginDragLeft menyetel ulang saat mouse pengguna meninggalkan PluginGui selama operasi seret dimulai oleh Plugin:StartDrag() .

Acara ini dan PluginDragDropped berguna untuk menyembunyikan UI "Drop Here" di PluginGuis di mana operasi serupa dapat dilemparkan. Sebuah UI seperti ini harus ditampilkan ketika PluginDragEntered menyetel ulang.

Lihat juga:

Parameter

dragData: Dictionary

Sebuah salinan dari data asli yang dikirim ke Plugin:StartDrag() .


Contoh Kode

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

Keamanan Plugin

PluginDragMoved menembak jika mouse pengguna bergerak di dalam PluginGui selama operasi seret dimulai oleh Plugin:StartDrag() .

Lihat juga:

Parameter

dragData: Dictionary

WindowFocusReleased

Keamanan Plugin

JendelaFokusDilepaskan menembak segera saat pengguna berhenti berinteraksi dengan jendela PluginGui, biasanya dengan mengklik sesuatu yang tidak dalam jendela. Fungsion ini bekerja dengan cara yang sama dengan acara UserInputService.WindowFocusReleased yang mirip.

Jika fokus bergerak ke <a href="/reference/engine/dataspeed">Class.PluginGui</a> lainnya sementara pengguna memiliki PluginGui ini dalam fokus, maka acara ini diaktifkan sebelum acara <a href="/reference/engine/dataspeed">Class.PluginGui.WindowFocused|WindowFocused</a> lainnya. Namun, jika jendela permainan utama di fokus, acara in


Contoh Kode

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

Keamanan Plugin

WindowFocused menembak segera saat pengguna mulai berinteraksi dengan jendela PluginGui, biasanya dengan mengklik di atasnya. Fungsion ini bekerja secara serupa dengan acara UserInputService.WindowFocused yang berhubungan dengan tombol mouse.

Jika PluginGui lainnya adalah dalam fokus dan pengguna fokus PluginGui ini, maka acara ini diaktifkan setelah acara WindowFocusReleased pengguna utama. Namun, jika jendela permainan utama dalam fokus, acara ini diaktifkan setelah acara setelah</


Contoh Kode

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)