Log inGet started

editorPanel assetType

A dock panel for the editor, expressed as an asset. A <name>.editorPanel/ folder whose init.luau returns the panel spec; the asset system registers it into the editor live (no restart) via the…

-- my_tools.editorPanel/init.luau
local Z = require("@builtin::modules.zui")
return {
    label = "My Tools",      -- tab title (defaults to the panel id)
    menu  = "scene",         -- which top-bar menu it appears under
    order = 50,              -- sort position within the menu / dock
    build = function(state)  -- REQUIRED: returns the panel's widget tree
        return Z.vbox({ Z.lbl("hello") })
    end,
    onCallback = function(id, data, state) return false end,  -- optional
    refresh = 0.5,           -- optional: re-poll interval (seconds)
    float = true,            -- optional: open as a floating window
}

The panel id defaults to the instance name (my_tools.editorPanel → id my_tools); set id in the spec to override. Registration is editor-profile only — a shipped runtime build carries no editor panels even if the assets are present. Editing the init.luau re-registers live; removing the asset drops the panel.

The editor's own tools are editorPanel instances too — read any of them under @builtin::editorPanels as a worked example.

  • asset-type
  • reference