Plugin
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Plugin adalah objek utama bertanggung jawab untuk menciptakan widget Studio dasar, alat toolbar plugin, tombol plugin, dan banyak lagi. Ini adalah add-on khusus untuk Studio yang menambahkan perilaku dan fitur baru yang tidak biasa. Plugin objek dapat diakses melalui referensi global Global.
Contoh Kode
assert(plugin, "This script must be run as a plugin!")
-- Code beyond this point will execute only if the script is run as a plugin
-- Load the module and pass the plugin reference
local pluginModule = require(script.Parent.PluginModule)
pluginModule:Initialize(plugin)
-- Verify if the plugin reference was initialized
pluginModule:CheckForPluginGlobal()
local pluginModule = {}
local plugin -- Local plugin reference
-- Initialize the plugin reference if not already set
function pluginModule:Initialize(pluginReference: Plugin)
if plugin ~= pluginReference then
plugin = pluginReference
else
error("Plugin is already initialized")
end
end
-- Check if the plugin reference is set and print out appropriate info
function pluginModule:CheckForPluginGlobal()
if plugin ~= nil then
print("Plugin reference is set!")
else
warn("Plugin reference is missing!")
end
end
return pluginModule
Rangkuman
Properti
Mengembalikan apakah pengguna mengaktifkan Collisions di studio di bawah tab Model.
Mengembalikan ukuran geseran网格 yang telah ditetapkan pengguna di Studio.
Metode
Tetapkan status plugin panggilan yang aktif.
- CreatePluginAction(actionId : string,text : string,statusTip : string,iconName : string,allowBinding : bool):PluginAction
Menciptakan PluginAction yang merupakan objek yang mewakili tindakan yang dapat dilakukan secara umum di Roblox Studio, tanpa ada langsung Toolbar atau Enum.Button .
Menciptakan menu plugin baru.
Membuat PluginToolbar baru dengan nama yang diberikan.
Mengaktifkan plugin.
Mengembalikan Enum.JointCreationMode yang dibuat oleh pengguna di studio di bawah tab Model.
Mengembalikan Mouse yang dapat digunakan saat plugin aktif.
Mengembalikan alat Enum.RibbonTool saat ini yang dipilih.
Mengambil nilai yang disimpan sebelumnya dengan unityang diberikan, atau nol jika kunci yang diberikan tidak ada.
Kembalinya benar jika plugin ini saat ini aktif, setelah telah diaktifkan melalui fungsi Plugin:Activate() .
Kembalinya benar jika plugin ini saat ini aktif dengan mouse eksklusif, setelah telah diaktifkan melalui fungsi Plugin:Activate() .
Menghilangkan bagian yang diberikan dan mengembalikan Operasi Penolakan yang sesuai.
Digunakan untuk membuka instansi naskah yang diberikan dalam jendela editor, di Roblox studio, pada garis yang diberikan. Jika tidak ada garis yang diberikan sebagai argumen, itu akan default ke 1.
Membuka jendela bantuan konteks ke halaman wiki yang url taut ke.
Membuka jendela upload untuk pilihan pengguna saat ini.
Aktifkan alat Roblox Studio yang ditentukan.
Memisahkan Operasi Uni yang diberikan dan mengembalikan bagian yang dihasilkan.
Menyimpan nilai yang diberikan untuk penggunaan selanjutnya di bawah unityang diberikan.Nilai ini akan bertahan bahkan setelah studio ditutup.
Memulai tindakan seret yang diberikan典典参数.
Menggabungkan bagian yang diberikan dan mengembalikan Operasi Union yang dihasilkan.
- CreateDockWidgetPluginGui(pluginGuiId : string,dockWidgetPluginGuiInfo : DockWidgetPluginGuiInfo):DockWidgetPluginGui
Menciptakan DockWidgetPluginGui yang diberi DockWidgetPluginGuiInfo .
Mendesak pengguna untuk membuka file animasi .fbx yang dapat dimuat ke dalam rigModel , lalu melanjutkan untuk menyisipkan animasi sebagai KeyframeSequence dalam Workspace .
Mendesak pengguna untuk membuka file .fbx, mengunggah komponen individu dari model sebagai meshes, dan menghasilkan rig karakter untuk digunakan dalam animasi, yang dimuat ke dalam Workspace .
Membuka jendela di Roblox Studio, yang menginstruksikan pengguna untuk memilih aset berdasarkan assetType yang ditentukan. Mengembalikan apa yang dinyatakan sebagai asetId, atau -1 jika jendela ditutup.
Mendesak pengguna untuk menyimpan pilihan mereka saat ini dengan nama file yang ditentukan. Kembalikan benar jika pengguna menyimpan file.
Acara
Diaktifkan saat plugin diaktifkan.
Mengakhiri segera sebelum Plugin berhenti berjalan.
Properti
CollisionEnabled
Mengembalikan apakah pengguna mengaktifkan Collisions di studio di bawah tab Model.
DisableUIDragDetectorDrags
GridSize
Mengembalikan ukuran geser grid yang telah ditetapkan pengguna di Studio di bawah Model atau Avatar tabs. Catat bahwa property ini mungkin memiliki kesalahan rounding kecil; misalnya, itu mungkin 0.0099999997764826 untuk pengguna menetapkan 1 atau 0.400
Metode
Activate
Fungsi ini menetapkan status plugin yang diaktifkan. Aktivasi plugin memungkinkan kontrol mouse melalui metode Plugin:GetMouse() .
Pada saat tertentu, ada 0 atau 1 Plugin Aktif. Mengaktifkan plugin akan menonaktifkan semua plugin lainnya (mereka akan menerima acara Plugin.Deactivation).
Lihat juga:
- Plugin:IsActivatedWithExclusiveMouse() , kembalinya true jika plugin ini saat ini aktif dengan mouse eksklusif, setelah telah diaktifkan melalui fungsi ini
- Plugin.Unloading , menjalankan langsung sebelum plugin diunload atau dimuat ulang melalui pemasangan ulang, deaktivasi, atau pembaruan
Parameter
Boolean yang menentukan apakah akan mengaktifkan plugin dengan mouse eksklusif. Jika benar, maka PluginMouse dapat diakses melalui Plugin:GetMouse().
Memberikan nilai
CreatePluginAction
Fungsi ini menciptakan PluginAction yang merupakan objek yang mewakili tindakan yang dapat dilakukan secara umum di Roblox Studio, tanpa ada langsung terkait Toolbar atau Enum.Button . Di Roblox Studio, mereka dapat ditetapkan tombol pintas di bawah <
Ketika tindakan diaktifkan, acara PluginAction.Triggered diperingatkan.
Untuk memastikan PluginActions berfungsi seperti yang diharapkan, mereka harus dibuat menggunakan fungsi ini.
Lihat juga:
- PluginMenu , menu konteks yang dapat ditunjukkan di Studio yang menunjukkan daftar PluginActions dan mendukung submenus
- Plugin:CreatePluginMenu() , menciptakan PluginMenu
Parameter
Harus menjadi string unik yang mengidentifikasi tindakan Plugin ini dari orang lain.
Nama yang ditunjukkan action.
Deskripsi actionyang ditunjukkan.
Nama ikon yang digunakan untuk menampilkan plugin.
Apakah PluginAction akan tersembunyi dari pandangan pintas Studio. Berguna untuk tindakan konteks. Standar untuk benar.
Memberikan nilai
Contoh Kode
local pluginAction = plugin:CreatePluginAction(
"HelloWorldAction",
"Hello World",
"Prints a 'Hello world!'",
"rbxasset://textures/sparkle.png",
true
)
pluginAction.Name = "Test Action"
local function actionTriggered()
print("Hello world!")
end
pluginAction.Triggered:Connect(actionTriggered)
CreatePluginMenu
Fungsi ini membuat PluginMenu baru, yang merupakan menu konteks yang dapat ditampilkan di Studio yang menunjukkan daftar PluginActions dan mendukung submeny.
Untuk memastikan PluginMenus berfungsi seperti yang diharapkan, mereka harus dibuat menggunakan fungsi ini.
Lihat juga:
- PluginAction , objek yang mewakili tindakan umum yang dapat dilakukan di Roblox Studio, tanpa ada langsung terasah Toolbar atau Enum.Button .
- Plugin:CreatePluginAction() , menciptakan PluginAction
- PluginMenu.Title , teks untuk ditampilkan saat digunakan sebagai sub menu
- PluginMenu.Icon, ikon untuk ditampilkan saat digunakan sebagai sub menu
- PluginMenu:AddAction() , menambahkan tindakan yang diberikan ke menu
- PluginMenu:AddNewAction() , menciptakan tindakan sementara yang tersembunyi dari jendela pintasan akses khusus Studio
- PluginMenu:AddMenu() , menambahkan menu yang diberikan sebagai pemisah
- PluginMenu:AddSeparator() , menambahkan pemisah antara item dalam menu
- PluginMenu:Clear() , menghapus menu
- PluginMenu:ShowAsync() , menunjukkan menu di mouse cursor. Memberikan sampai item yang dipilih atau menu ditutup. Tindakan yang dipilih mengeksekusi acara Triggered-nya
Parameter
ID unik untuk menu.
Teks untuk ditampilkan saat digunakan sebagai sub menu.
Ikon untuk ditampilkan saat digunakan sebagai sub menu.
Memberikan nilai
Contoh Kode
-- This code can be pasted into the command bar, but only once
local pluginMenu = plugin:CreatePluginMenu(math.random(), "Test Menu")
pluginMenu.Name = "Test Menu"
pluginMenu:AddNewAction("ActionA", "A", "rbxasset://textures/loading/robloxTiltRed.png")
pluginMenu:AddNewAction("ActionB", "B", "rbxasset://textures/loading/robloxTilt.png")
local subMenu = plugin:CreatePluginMenu(math.random(), "C", "rbxasset://textures/explosion.png")
subMenu.Name = "Sub Menu"
subMenu:AddNewAction("ActionD", "D", "rbxasset://textures/whiteCircle.png")
subMenu:AddNewAction("ActionE", "E", "rbxasset://textures/icon_ROBUX.png")
pluginMenu:AddMenu(subMenu)
pluginMenu:AddSeparator()
pluginMenu:AddNewAction("ActionF", "F", "rbxasset://textures/sparkle.png")
local toggle = Instance.new("BoolValue")
toggle.Name = "TogglePluginMenu"
toggle.Parent = workspace
local function onToggled()
if toggle.Value then
toggle.Value = false
local selectedAction = pluginMenu:ShowAsync()
if selectedAction then
print("Selected Action:", selectedAction.Text, "with ActionId:", selectedAction.ActionId)
else
print("User did not select an action!")
end
end
end
toggle.Changed:Connect(onToggled)
CreateToolbar
Fungsi CreateToolbar membuat PluginToolbar baru dengan nama yang diberikan. Toolbar kemudian dapat digunakan untuk membuat tombol plugin.
Parameter
Teks yang terlihat di bilah alat, menandai kelompok tombol yang terkandung di dalamnya.
Memberikan nilai
Contoh Kode
plugin:CreateToolbar("ExampleToolbar")
Deactivate
Mengaktifkan plugin. Ini akan mengurangi Class.PluginMouse yang terkait jika telah aktif
Lihat juga:
- Plugin:Activate() , menetapkan status plugin panggilan yang aktif
- Plugin.Deactivation , diaktifkan saat plugin diaktifkan
- Plugin.Unloading , menjalankan langsung sebelum plugin diunload atau dimuat ulang melalui pemasangan ulang, deaktivasi, atau pembaruan
Memberikan nilai
GetJoinMode
Mengembalikan Enum.JointCreationMode yang dibuat oleh pengguna di studio di bawah tab Model.
Memberikan nilai
GetMouse
DapatkanMouse mengembalikan PluginMouse yang dapat digunakan saat plugin aktif melalui Plugin:Activate() .
Memberikan nilai
Contoh Kode
local mouse = plugin:GetMouse()
local function button1Down()
print("Button 1 pressed from PluginMouse")
end
mouse.Button1Down:Connect(button1Down)
GetSelectedRibbonTool
Dapatkan SelectedRibbonTool kembali Enum.RibbonTool . Ini mengembalikan Ennum yang sesuai dengan alat tertentu. Ini akan mengembalikan apakah alat di選擇手動 atau secara程式 via Plugin:SelectRibbonTool() .
Memberikan nilai
Contoh Kode
plugin:SelectRibbonTool(Enum.RibbonTool.Move, UDim2.new())
task.wait() -- wait for next frame
local selectedRibbonTool = plugin:GetSelectedRibbonTool()
print("The selected RibbonTool is", selectedRibbonTool)
GetSetting
Mengambil nilai yang disimpan sebelumnya dengan unityang diberikan, atau nol jika kunci yang diberikan tidak ada.
Karena beberapa instansi plugin yang sama dapat berjalan bersamaan (misalnya, jika beberapa jendela Studio terbuka), Anda tidak boleh bergantung pada nilai ini tetap sama selama waktu. Instans plugin lainnya dapat memperbarui pengaturan kapan saja.
Panggilan ini dapat diam-diam gagal dan mengembalikan nil jika beberapa instans plugin yang sama sedang membaca dan menulis data. Jika plugin Anda mengharapkan untuk menulis ke pengaturan dengan sering, Anda harus memeriksa kembali nilai yang dikembalikan dari panggilan ini setelah waktu yang singkat untuk membedakan antara pengaturan yang sementara tidak tersedia dan pengaturan yang tidak ada.
Parameter
Memberikan nilai
Contoh Kode
local RAN_BEFORE_KEY = "RanBefore"
local didRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if didRunBefore then
print("Welcome back!")
else
plugin:SetSetting(RAN_BEFORE_KEY, true)
print("Welcome! Thanks for installing this plugin!")
end
IsActivated
Fungsi ini kembali benar jika plugin ini saat ini aktif, setelah telah diaktifkan melalui fungsi Plugin:Activate() .
Memberikan nilai
Boolean yang menunjukkan apakah plugin saat ini aktif.
IsActivatedWithExclusiveMouse
Fungsi ini mengembalikan benar jika plugin ini saat ini aktif dengan mouse eksklusif, setelah telah diaktifkan melalui fungsi Plugin:Activate(). Jika fungsi ini mengembalikan benar, maka PluginMouse dapat diambil melalui fungsi Plugin:GetMouse().
Lihat juga:
- Plugin.Deactivation , diaktifkan saat plugin diaktifkan
- Plugin.Unloading , menjalankan langsung sebelum plugin diunload atau dimuat ulang melalui pemasangan ulang, deaktivasi, atau pembaruan
Memberikan nilai
Apakah plugin ini saat ini aktif dengan mouse eksklusif.
Negate
Menghilangkan bagian yang diberikan dan mengembalikan Operasi Penolakan yang sesuai.
Parameter
Memberikan nilai
OpenScript
Digunakan untuk membuka instansi naskah yang diberikan dalam jendela editor, di Roblox studio, pada garis yang diberikan. Jika tidak ada garis yang diberikan sebagai argumen, itu akan default ke 1.
Parameter
Memberikan nilai
Contoh Kode
local newScript = Instance.new("Script")
newScript.Parent = workspace
plugin:OpenScript(newScript)
OpenWikiPage
Membuka jendela bantuan konteks ke halaman wiki yang url taut ke.
Parameter
Memberikan nilai
Contoh Kode
plugin:OpenWikiPage("API:Class/BasePart")
SaveSelectedToRoblox
Membuka jendela upload untuk pilihan pengguna saat ini.
Memberikan nilai
SelectRibbonTool
Aktifkan alat Roblox Studio yang ditentukan. Jika alat tersebut membuka jendela, parameter posisi menentukan di mana harus ditunjukkan di layar.
Catatan:
- Sebuah objek harus dipilih agar ini berfungsi dengan benar.
- Mengubah field skala position property tidak akan mengubah popup dialog.
Parameter
Memberikan nilai
Separate
Memisahkan Operasi Uni yang diberikan dan mengembalikan bagian yang dihasilkan.
Parameter
Memberikan nilai
SetSetting
Menyimpan nilai tertentu untuk penggunaan nanti di bawah unityang diberikan.Nilai ini akan bertahan bahkan setelah Roblox Studio ditutup. Pengaturan ini disimpan dalam format JSON sebagai peta dengan kunci string. Arrays diubah secara otomatis menjadi peta dengan menyimpan kunci numerik ke string pertama.
Catat bahwa format JSON menempatkan batasan tambahan, termasuk karakter berikut yang dapat menyebabkan file pengaturan rusak:
- Backslashes ( \ ) di kunci atau nilai, khususnya kutipan yang lolos ( \ "5").
- Baris baru ( \n ) dalam kunci.
- Quotes ( " ) dalam kunci.
- Periode ( ) di kunci.
Panggilan ini dapat gagal diam-diam jika beberapa instansi plugin yang sama secara aktif membaca dan menulis data. Jika plugin Anda berharap untuk menulis ke pengaturan dengan sering, Anda dapat memeriksa apakah data telah ditulis dengan benar dengan menelepon Plugin:GetSetting() .
Parameter
Memberikan nilai
Contoh Kode
local RAN_BEFORE_KEY = "RunBefore"
local hasRunBefore = plugin:GetSetting(RAN_BEFORE_KEY)
if hasRunBefore then
print("Welcome back!")
else
print("Thanks for installing this plugin!")
plugin:SetSetting(RAN_BEFORE_KEY, true)
end
StartDrag
Mulai Drag memulai tindakan seret dengan menggunakan kamus parameter. Para parameter adalah sebagai berikut:
<tbody><tr><td><b>Pengirim</b></td><td>string</td><td><code>""</code></td><td>Mengidentifikasi sumber tindakan tarik ke target jatuh</td></tr><tr><td><b>Tipe Mime</b></td><td>string</td><td><code>""</code></td><td>Jenis <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MINE</a> dari <b>Data</b> .</td></tr><tr><td><b>Data</b></td><td>string</td><td><code>""</code></td><td>Informasi tentang actionseret, misalnya apa yang di seret. Harus digunakan oleh target drop.</td></tr><tr><td><b>Ikon Tikus</b></td><td><code>Datatype.Content</code></td><td><code>""</code></td><td>Ikon untuk digunakan untuk mouse cursor selama拖. Jika kosong, menggunakan cursor default.</td></tr><tr><td><b>Simbol Drag</b></td><td><code>Datatype.Content</code></td><td><code>""</code></td><td>Sebuah gambar untuk menyempurnakan tampilan di bawah mouse selama tahap tertarik. Ini seharusnya mewakili item yang terseret.</td></tr><tr><td><b>HotSpot</b></td><td><code>Datatype.Vector2</code></td><td><code>Datatype.Vector2.new(0, 0)</code></td><td>PixelOffset dari bagian atas kiri di mana cursor harus "menahan" <b>DragIcon</b> .</td></tr></tbody>
Nama | Jenis | Standar | Deskripsi |
---|
Lihat juga:
Parameter
Memberikan nilai
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)
Union
Menggabungkan bagian yang diberikan dan mengembalikan Operasi Union yang dihasilkan.
Parameter
Memberikan nilai
CreateDockWidgetPluginGui
CreateDockWidgetPluginGui menciptakan DockWidgetPluginGui baru dari DockWidgetPluginGuiInfo . Parameter pertama, 0> uginGuiId0>, harus menjadi string yang unik dan konsisten. Ini digunakan untuk menyimpan status dok state dan beberapa rincian internal lainnya.
Parameter
Pengenal unik dan konsisten yang digunakan untuk menyimpan status dok bunga dan detail internal lainnya.
Menggambarkan DockWidgetPluginGui untuk menciptakan (negara awal, ukuran, dll).
Memberikan nilai
Contoh Kode
-- Create new 'DockWidgetPluginGuiInfo' object
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float, -- Widget will be initialized in floating panel
true, -- Widget will be initially enabled
false, -- Don't override the previous enabled state
200, -- Default width of the floating window
300, -- Default height of the floating window
150, -- Minimum width of the floating window (optional)
150 -- Minimum height of the floating window (optional)
)
-- Create new widget GUI
local testWidget = plugin:CreateDockWidgetPluginGui("TestWidget", widgetInfo)
local testButton = Instance.new("TextButton")
testButton.BorderSizePixel = 0
testButton.TextSize = 20
testButton.TextColor3 = Color3.new(1, 0.2, 0.4)
testButton.AnchorPoint = Vector2.new(0.5, 0.5)
testButton.Size = UDim2.new(1, 0, 1, 0)
testButton.Position = UDim2.new(0.5, 0, 0.5, 0)
testButton.SizeConstraint = Enum.SizeConstraint.RelativeYY
testButton.Text = "Click Me"
testButton.Parent = testWidget
ImportFbxAnimation
Fungsi ini menginstruksikan pengguna untuk membuka file animasi .fbx yang dapat dimuat ke rigModel , lalu melanjutkan untuk menyisipkan animasi sebagai KeyframeSequence dalam Workspace .
Parameter
Memberikan nilai
ImportFbxRig
Mendesak pengguna untuk membuka file .fbx, mengunggah komponen individu dari model sebagai meshes, dan menghasilkan rig karakter untuk digunakan dalam animasi, yang dimuat ke dalam Workspace .
Parameter
Memberikan nilai
PromptForExistingAssetId
Membuka jendela di Roblox Studio, yang menginstruksikan pengguna untuk memilih aset berdasarkan assetType yang ditentukan. Mengembalikan apa yang dinyatakan sebagai asetId, atau -1 jika jendela ditutup.
Parameter
Memberikan nilai
Acara
Deactivation
Diaktifkan ketika Plugin dideaktifkan. Ini terjadi ketika kode plugin menelepon Plugin:Deactivate() , atau karena beberapa plugin lainnya menelepon Plugin:Activate(), yang memaksa semua plugin lainnya kehilangan status aktif mereka.
Lihat juga:
- Plugin.Unloading , menjalankan langsung sebelum plugin diunload atau dimuat ulang melalui pemasangan ulang, deaktivasi, atau pembaruan
Unloading
Acara ini segera menjalankan sebelum Plugin berhenti berjalan. Plugin diunload saat dinonaktifkan, tidak diinstal, akan diperbarui, atau saat tempat ditutup.
Ini mengizinkan plugin untuk membersihkan setelah dirinya sendiri sebelum skrip berhenti berjalan, misalnya untuk menghapus instans yang tidak perlu dari DataModel . Jika plugin tidak membersihkan dengan benar, salinan lama akan tetap ada. Saat ini, pengguna mungkin diwajibkan untuk menutup dan membuka kembali tempat yang merupakan pengalaman pengguna yang buruk.
Instansi plugin seperti PluginToolbarButtons , DockWidgetPluginGuis dan PluginGuis secara otomatis bersihkan ketika plugin diunload sehingga tidak perlu menghapusnya.