Bootstrap Chameleon Logo

Built-in Menu Items

Built-in Menu Items

内置菜单,一个开始,一个起点

TIP
内置工具除了随着插件发布,也可以在DefaultResources@Github获得

内置菜单

OnToolbar

主工具栏中的Python图标下拉按钮,用来放置直接执行的Python命令。

在这里预置了用于快速在编辑器中获取对象的菜单项,打印资源间的引用和依赖关系和执行GC命令的菜单项等

G23_command_menu

OnToolBarChameleon

主工具栏中的绿色变色龙图标Green chameleon icon with Python logo in the background,用来放置ChameleonTools

Chameleon Tools drop-down menu in Unreal Engine's main toolbar

OnSelectAssetsMenu

选中资源,右键弹出菜单

Menu item in selected asset's context menu

在这个菜单项的配置中,使用了"canExecuteAction"字段。其中的Python代码的返回值会决定菜单项是否可被点击。(不可点击时为灰色)

MenuConfig.json::OnSelectAssetsMenu

"name": "TA Python Example",
"items": [
    {
        "name": "Example (3): Log BP Classes",
        "tooltip": "Only Actived when Blueprint selected",
        "command": "import Utilities, QueryTools; QueryTools.Utils.log_classes(Utilities.Utils.get_selected_assets()[0]) ",
        "canExecuteAction": "import QueryTools; return QueryTools.Utils.is_selected_asset_type([unreal.Blueprint])"
    }
]

TIP
"canExecuteAction"中的代码会在widget Tick中执行,因此需要避免使用重度的Python代码

OnSelectFolderMenu

在ContentBrowser中,选中目录,或者空白处,右键弹出菜单

演示菜单项和子菜单项

Content menu items of selected folder in Unreal Engine's Content Browser

OnMainMenu

在主菜单的Tools菜单项下的菜单

'083_main_menu

OnOutlineMenu

在Outline窗口中,选中物体,右键弹出菜单

TAPython-created menu items in Unreal Engine's main menu

OnMaterialEditorMenu

在材质编辑的Tools菜单项下的菜单。有打印选中的节点,将其赋予全局变量"_r"等功能

TAPython-created menu items in Unreal Engine's Material Editor

OnTabContextMenu

"OnTabContextMenu" 是一个全局菜单项,它会应用到所有的ChameleonTool上(Sketch除外)

TIP
"OnTabContextMenu" 只在UE5中有效

在默认资源中,就给所有的ChamaleonTool添加了一个"Reload this tool",菜单项。利用ChameleonTools再从新打开时,可以自动更新修改过的界面的特性,使得我们在开发工具的过程中,使得界面和逻辑能够即时生效

MenuConfig.json

"OnTabContextMenu":{
    "name": "TA Python Tab",
    "items": [
        {
            "name": "Reload this tool",
            "command": "unreal.ChameleonData.request_close(%tool_path); unreal.ChameleonData.launch_chameleon_tool(%tool_path)"
        }
    ]
}

Reload the tool menu in Shelf tool tab's context menu

例如下图的例子中,我们可以在修改玩界面和Python逻辑的同时,通过这个"Reload"菜单,使得修改立即生效

G_014_ReloadLogic_s

更多关于界面和逻辑Reload的内容可见这里:每次启动时自动reload python逻辑

参考

此外,我们还可以通过配置给材质编辑器,物理资源编辑器等添加菜单项,具体的做法可见这里