PluginGui
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
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
Judul yang ditampilkan di atas konten PluginGui .
Mengubah kesichtasan dari item ini LayerCollector .
Menentukan apakah LayerCollector resets (menghapus diri dan mengklon kembali ke karakter pemain) setiap kali karakter pemain respawns.
Mengontrol cara GuiObject.ZIndex berperilaku terhadap semua cucu dari LayerCollector ini.
Menggambarkan posisi layar sebenarnya dari elemen UI, dalam pixel.
Menggambarkan rotasi layar sebenarnya dari elemen UI, dalam derajat.
Menggambarkan ukuran layar sebenarnya dari elemen UI, dalam pixel.
Ketika diatur ke benar, lokalisasi akan diterapkan ke GuiBase2d dan pendahulunya.
Sebuah referensi ke Class.LocalizationTable untuk digunakan untuk menerapkan lokalisasi otomatis ke GuiBase2d dan pendahulunya.
Mengubah perilaku pemilihan gamepad ke arah bawah.
Mengubah perilaku pemilihan gamepad di arah kiri.
Mengubah perilaku pemilihan gamepad ke arah yang benar.
Mengubah perilaku pemilihan gamepad ke arah atas.
Memungkinkan kustomisasi gerakan pemilihan gamepad.
Metode
Ikat fungsi ke tombol dekat, PluginGui close, menggeser perilaku default.
Mengembalikan posisi mouse relatif terhadap PluginGui.
Acara
Dibakar saat pengguna melepaskan mouse mereka saat menyorot PluginGui selama operasi seret saat dimulai oleh Plugin:StartDrag() .
Diaktifkan saat mouse pengguna memasuki PluginGui selama operasi seret dimulai oleh Plugin:StartDrag() .
Dibakar saat mouse pengguna meninggalkan PluginGui selama operasi seret dimulai oleh Plugin:StartDrag() .
Dibakar saat mouse pengguna bergerak di dalam PluginGui selama operasi seret dimulai oleh Plugin:StartDrag() .
Diaktifkan saat pengguna berhenti berinteraksi dengan jendela PluginGui.
Berdapi saat pengguna mulai berinteraksi dengan jendela PluginGui.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Dibakar saat pemilihan gamepad bergerak ke, pergi, atau berganti di dalam GuiBase2d atau GuiObjek Descendant apa pun.
Properti
Metode
BindToClose
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:
- Plugin:CreateDockWidgetPluginGui() untuk membuat PluginGui
- DataModel:BindToClose() , yang dapat digunakan untuk menyambungkan fungsi ke game berakhir dan seharusnya tidak bingung dengan fungsi ini
Parameter
Fungsi untuk menyambungkan tombol tutup ke. Jika tidak ada fungsi yang ditentukan maka fungsi sebelumnya yang ditentukan akan dihapus.
Memberikan nilai
GetRelativeMousePosition
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
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
PluginDragDropped menyetel ulang saat pengguna melepaskan mouse mereka di atas PluginGui selama operasi seret saat dimulai oleh Plugin:StartDrag() .
Lihat juga:
Parameter
Contoh Kode
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 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
Sebuah salinan dari data asli yang dikirim ke Plugin:StartDrag() .
Contoh Kode
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 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
Sebuah salinan dari data asli yang dikirim ke Plugin:StartDrag() .
Contoh Kode
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 menembak jika mouse pengguna bergerak di dalam PluginGui selama operasi seret dimulai oleh Plugin:StartDrag() .
Lihat juga:
Parameter
WindowFocusReleased
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
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 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
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)