底层指令系统
7 大 C++ 开源 Command 类
第三章:支持哪些 MCP 接口(开源部分 C++ 指令汇总)
本指南聚焦于除了闭源 fabserver 云端通信以外,完全开源、受您掌控的 C++ 底层 MCP 指令。通过 UUmgMcpBridge (C++ 桥接器 Subsystem) 直连,AI 可以直接发起并在虚幻引擎主线程中秒级执行下列 7 大领域 的数十种原生 C++ API,实现引脚级的蓝图连线、控件构造及材质注入。
1. Viewport & Graph 感知指令 (Attention)
实现 AI 对虚幻编辑器视口和蓝图编辑状态的“视觉感知”与焦点锁定,是执行后续修改动作的前置条件。
| 指令名称 (CommandType) | 功能描述 | 核心参数 (JSON) |
|---|---|---|
| get_last_edited_umg_asset | 获取最后一次被修改编辑的 UMG 资产路径 | 无 |
| get_recently_edited_umg_assets | 列表返回近期在编辑器中活跃的 UMG 资产集 | 无 |
| get_target_umg_asset | 查询当前被 Attention 系统锁定的目标 UMG 资产 | 无 |
| set_target_umg_asset | 强制将指定 UMG 资产锁定为当前 AI 操纵目标 | {"asset_path": "String"} |
| get_target_widget | 查询当前选中的目标控件名称 | 无 |
| set_target_widget | 设置当前 AI 聚焦的 UMG 控件 | {"widget_name": "String"} |
| set_target_graph | 设置当前编辑的目标蓝图图表或函数,若目标为 Component.Event(如 Button.OnClicked)将调用 C++ 自动生成对应的绑定事件 | {"graph_name": "String"} 或 {"function_name": "String"} |
| get_target_graph | 获取当前操作的蓝图图表名称 | 无 |
| set_cursor_node | 将当前逻辑编辑焦点定位在图表中指定节点 | {"node_id": "String"} |
| get_cursor_node | 获取当前逻辑光标指向的节点 ID | 无 |
2. UMG 控件架构指令 (Widget Operations)
直接操纵虚幻 UMG 编辑器底层的 SWidget 控件树,进行高精度的层级增删改查。
| 指令名称 (CommandType) | 功能描述 | 核心参数 (JSON) |
|---|---|---|
| get_widget_tree | 获取完整 UMG 控件树层级结构,包括父子嵌套及槽类型 | 无 |
| query_widget_properties | 利用 C++ 反射(Reflection)查询指定控件的所有可编辑属性值 | {"widget_name": "String"} |
| get_widget_schema | 获取指定控件的基类结构和支持的布局元数据 | {"widget_class": "String"} |
| create_widget | 在指定父控件和 Slot(插槽)下,物理创建一个全新的控件对象 | {"widget_name": "String", "widget_class": "String", "parent_name": "String"} |
| set_widget_properties | 批量或单独更新指定控件的反射属性值(支持 Slot、颜色、锚点等) | {"widget_name": "String", "properties": {"Property_Name": "Value"}} |
| delete_widget | 物理销毁一个控件以及它下面的所有子层级树 | {"widget_name": "String"} |
| reparent_widget | 重新调整控件在控件树中的嵌套层级(换亲) | {"widget_name": "String", "new_parent_name": "String"} |
| save_asset | 强制命令虚幻编辑器将当前的 UMG 物理资产保存落盘 | 无 |
| get_layout_data | 读取当前编辑器视口下的物理尺寸、外边距及偏移布局数据 | 无 |
| check_widget_overlap | 根据布局槽的物理参数,分析指定的两个控件在视口中是否碰撞或重叠 | {"widget_a": "String", "widget_b": "String"} |
3. UI 物理文件序列化指令 (File Transformation)
提供将 UMG 控件物理状态与磁盘通用 JSON 文件进行高阶转换的序列化引擎。
| 指令名称 (CommandType) | 功能描述 | 核心参数 (JSON) |
|---|---|---|
| export_umg_to_json | 将当前 UMG 控件的全部树关系与反射属性完整序列化并物理输出为标准 JSON 格式 | {"export_path": "String"} |
| apply_json_to_umg | 读取外部 JSON 布局描述文件,利用增量反序列化技术,在编辑器中物理重建或修改 UMG 资产 | {"json_path": "String"} |
4. UI Sequencer 动效与关键帧指令 (Sequencer)
直接在 C++ 层面操纵 UI 的 Sequencer (动画轨道),向控件中精准植入、编辑或清理关键帧,实现灵动特效。
| 指令名称 (CommandType) | 功能描述 | 核心参数 (JSON) |
|---|---|---|
| get_all_animations | 拉取当前 UMG 资产内所有的 UI 动效名列表 | 无 |
| create_animation | 物理创建一个全新的 UWidgetAnimation 动画对象 | {"animation_name": "String"} |
| delete_animation | 删除指定的 UWidgetAnimation 动画对象 | {"animation_name": "String"} |
| set_property_keys | 在特定的时间切片上,为控件的某个动画属性强行写入或覆写关键帧数据值 | {"animation_name": "String", "widget_name": "String", "property_path": "String", "time": 0.5, "value": 1.0} |
| remove_property_track | 物理移除指定控件在某个动画下的特定属性渲染轨道 | {"animation_name": "String", "widget_name": "String", "property_path": "String"} |
| get_animation_keyframes | 返回动画的全部关键帧时间轴排布数据 | {"animation_name": "String"} |
| get_animated_widgets | 查询当前动画绑定控制了哪些控件节点 | {"animation_name": "String"} |
| get_animation_full_data | 一键打包返回动画下的所有轨道、通道及关键帧的超完整 JSON 结构 | {"animation_name": "String"} |
| animation_append_widget_tracks | 批量为多个控件追加空的动效轨道 | {"animation_name": "String", "widgets": ["String"]} |
| animation_delete_widget_keys | 清理特定时间段内某个控件在动画中的所有关键帧 | {"animation_name": "String", "widget_name": "String", "start_time": 0.0, "end_time": 1.0} |
5. 蓝图低阶图表连线与高阶逻辑指令 (Blueprint Graph & Action)
这是本插件最强悍的黄金级 C++ 能力。AI 通过它不仅能生成控件,还能在蓝图图表中生成逻辑节点,控制光标在节点间自动流转并自动引脚连线(Execution Pin / Variable Pin Wiring),且支持快捷编译!
| 指令名称 (CommandType) | 子动作 (subAction / action) | 功能与 C++ 智能逻辑描述 | 核心参数 (JSON) |
|---|---|---|---|
| manage_blueprint_graph | create_node / add_node | 在蓝图图表中注入一个节点。若未指定坐标将调用 UUmgAttentionSubsystem 自动计算非重叠偏置;若指定 autoConnectToNodeId,将自动拉出引脚与目标节点进行顺畅连线。 |
{"action": "create_node", "nodeType": "String", "x": 100, "y": 200, "autoConnectToNodeId": "String"} |
| delete_node | 从图表中物理擦除一个节点。若删除的正是光标所在节点,C++ 系统会自动寻找前驱或后继节点,重设光标焦点(newCursorNode)。 |
{"action": "delete_node", "nodeId": "String"} | |
| connect_pins | 在图表中进行引脚级(Pin-to-Pin)硬连线,支持执行流连线与参数值连线。 | {"action": "connect_pins", "fromNode": "String", "fromPin": "String", "toNode": "String", "toPin": "String"} | |
| add_variable / add_param | 在蓝图中动态声明并注册一个新变量或输入输出参数。 | {"action": "add_variable", "varName": "String", "varType": "String"} | |
| compile_blueprint | 无 | 物理编译当前的 WidgetBlueprint,实时刷新编辑器反射缓存,令前述连线与变量当场生效! | 无 |
| create_blueprint | 无 | 物理创建普通的 Actor 蓝图类资产 | {"bp_name": "String", "parent_class": "String", "path": "String"} |
| add_component_to_blueprint | 无 | 为通用蓝图注入根组件或子组件(如 Box/StaticMesh 等) | {"bp_path": "String", "component_class": "String", "component_name": "String"} |
6. UI 材质与 HLSL 着色器指令 (Material & HLSL)
这是专为 UE 高级动效开发者设计的着色器工具集。AI 能够解析现有 UI 材质的结构树,或者在指定材质节点中直接注入一段定制的 HLSL 局部渲染算法(例如霓虹扫描、毛玻璃折射算法),物理自动生成节点并连入主输出引脚。
所有在 C++ 派发器中以 material_ 开头或以 hlsl_ 开头的 JSON 指令,都会自动被路由至底层的 FUmgMcpMaterialCommands 进行高级解析与编译。支持如材质参数修改、节点连接、着色器片段自动对齐等高阶特效开发需求。
7. 关卡世界与通用资产管理指令 (Editor World & Assets)
用于对关卡(Level)中的静态网格体、灯光及相机等 3D 元素进行快捷操纵,并提供全局资产扫描和状态检索。
| 指令名称 (CommandType) | 功能描述 | 核心参数 (JSON) |
|---|---|---|
| get_actors_in_level | 列表返回当前关卡世界中的全部 Actor 及其类型 | 无 |
| find_actors_by_name | 通过模糊匹配名称,在关卡中查找特定实例 | {"actor_name": "String"} |
| spawn_actor | 在关卡世界的指定位置生成一个标准网格体、灯光、相机或自定义类 | {"actor_class": "String", "location": {"x":0,"y":0,"z":0}} |
| delete_actor | 从 3D 视口中删除指定的 Actor | {"actor_name": "String"} |
| set_actor_transform | 更新 Actor 的三维平移、旋转与缩放参数 | {"actor_name": "String", "location": {"x":0,"y":0,"z":0}} |
| refresh_asset_registry | 强制命令编辑器资产注册表进行全量或局部同步扫描,确保新生成资产被 AI 发现 | 无 |
| list_assets | 查询指定路径或通配符下的所有可用资产目录 | {"folder_path": "String"} |
💡 真正的“双回路”无网络代理内存直连
在开发或查阅文档时,切勿混淆概念。UMG MCP 插件在系统架构上拥有精密的 双回路物理隔离 设计:
-
内置直接直连回路(零网络):当您直接在编辑器右侧的 UMG MCP 对话面板中向 Agent 提问并点击
Accept审批时,前述指令是 100% 内存级直连 执行的。它直接调用 C++ 底层指针派发,绝对不通过 任何网络端口或回环 IP,不存在网络代理延时,具有极致的绝对安全与性能! - 外部桥接回路(可发现的动态 TCP 监听):需要由外部 AI 工具接管虚幻时,每个 UE 进程都会绑定唯一的系统分配回环端口并发布发现记录。底层子线程读取 JSON 指令,再通过串行 Game Thread 队列安全执行。
📸 物理架构视图占位
[IMAGE_PLACEHOLDER: UmgMcp C++ Subsystem Dual-Loop Connection Architecture]
这里可绘制一张架构拓扑图,展示内部 Slate/Subsystem 内存直连与外部 Python/Codex 动态 TCP 发现桥接的双回路机制。