diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 179408f..2234dea 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -37,26 +37,26 @@ mcp-bridge/
```json
{
- "name": "mcp-bridge",
- "version": "1.0.0",
- "description": "MCP Bridge for Cocos Creator",
- "main": "main.js",
- "panel": {
- "main": "panel/index.html",
- "type": "dockable",
- "title": "MCP Bridge",
- "width": 800,
- "height": 600
- },
- "contributions": {
- "menu": [
- {
- "path": "Packages/MCP Bridge",
- "label": "Open Test Panel",
- "message": "open-test-panel"
- }
- ]
- }
+ "name": "mcp-bridge",
+ "version": "1.0.0",
+ "description": "MCP Bridge for Cocos Creator",
+ "main": "main.js",
+ "panel": {
+ "main": "panel/index.html",
+ "type": "dockable",
+ "title": "MCP Bridge",
+ "width": 800,
+ "height": 600
+ },
+ "contributions": {
+ "menu": [
+ {
+ "path": "Packages/MCP Bridge",
+ "label": "Open Test Panel",
+ "message": "open-test-panel"
+ }
+ ]
+ }
}
```
@@ -104,23 +104,30 @@ startServer(port) {
## 4. 开发历程与里程碑
### 2026-02-10: Undo 系统深度修复与规范化
+
- **问题分析**: 修复了 `TypeError: Cannot read property '_name' of null`。该错误是由于直接修改节点属性(绕过 Undo 系统)与分组事务混用导致的。
- **重构要点**: 将 `update-node-transform` 中所有的直接赋值替换为 `scene:set-property` IPC 调用,确保所有变换修改均受撤销系统监控。
- **缺陷修正**: 修复了 `manage_undo` 在 `begin_group` 时传递错误参数导致 "Unknown object to record" 的问题。
- **全量汉化与文档同步**: 完成了 `main.js` 和 `scene-script.js` 的 100% 简体中文翻译。同步更新了 `README.md`、`DEVELOPMENT.md` 及 `注意事项.md`。
+### 2026-02-13: 新增 `open_prefab` 功能与消息协议修正
+
+- **需求实现**: 新增 `open_prefab` 工具,允许 AI 直接打开预制体进入编辑模式。
+- **协议修正**: 经过测试对比,最终确认使用 `scene:enter-prefab-edit-mode` 消息并配合 `Editor.Ipc.sendToAll` 是进入预制体编辑模式的最佳方案,解决了 `scene:open-by-uuid` 无法触发编辑状态的问题。
+- **文档深度补全**: 遵循全局开发规范,同步更新了所有技术文档,确保 100% 简体中文覆盖及详尽的 JSDoc 注释。
+
### 3.2 MCP 工具注册
在 `/list-tools` 接口中注册工具:
```javascript
const tools = [
- {
- name: "get_selected_node",
- description: "获取当前选中的节点",
- parameters: []
- },
- // 其他工具...
+ {
+ name: "get_selected_node",
+ description: "获取当前选中的节点",
+ parameters: [],
+ },
+ // 其他工具...
];
```
@@ -130,13 +137,13 @@ const tools = [
```javascript
const sceneScript = {
- 'create-node'(params, callback) {
- // 创建节点逻辑...
- },
- 'set-property'(params, callback) {
- // 设置属性逻辑...
- },
- // 其他操作...
+ "create-node"(params, callback) {
+ // 创建节点逻辑...
+ },
+ "set-property"(params, callback) {
+ // 设置属性逻辑...
+ },
+ // 其他操作...
};
```
@@ -238,33 +245,33 @@ manageAsset(args, callback) {
```html
-
-
- Main
- Tool Test
-
+
+
+ Main
+ Tool Test
+
-
-
-
-
+
+
+
+
-
-
+
+
```
@@ -283,6 +290,7 @@ manageAsset(args, callback) {
**错误信息**:`Panel info not found for panel mcp-bridge`
**解决方案**:
+
- 检查 `package.json` 中的面板配置
- 确保 `panel` 字段配置正确,移除冲突的 `panels` 字段
@@ -291,6 +299,7 @@ manageAsset(args, callback) {
**错误信息**:`Parent path ... is not exists`
**解决方案**:
+
- 在创建资源前添加目录检查和创建逻辑
- 使用 `fs.mkdirSync(dirPath, { recursive: true })` 递归创建目录
@@ -299,6 +308,7 @@ manageAsset(args, callback) {
**错误信息**:`SyntaxError: Invalid or unexpected token`
**解决方案**:
+
- 使用模板字符串(反引号)处理多行字符串
- 避免变量名冲突
@@ -321,6 +331,7 @@ manageAsset(args, callback) {
### 5.2 API 文档
为每个 MCP 工具编写详细的 API 文档,包括:
+
- 工具名称
- 功能描述
- 参数说明
@@ -344,17 +355,17 @@ manageAsset(args, callback) {
### 6.2 使用流程
1. **启动服务**:
- - 打开 Cocos Creator 编辑器
- - 选择 `Packages/MCP Bridge/Open Test Panel`
- - 点击 "Start" 按钮启动服务
+ - 打开 Cocos Creator 编辑器
+ - 选择 `Packages/MCP Bridge/Open Test Panel`
+ - 点击 "Start" 按钮启动服务
2. **连接 AI 编辑器**:
- - 在 AI 编辑器中配置 MCP 代理
- - 使用 `node [项目路径]/packages/mcp-bridge/mcp-proxy.js` 作为命令
+ - 在 AI 编辑器中配置 MCP 代理
+ - 使用 `node [项目路径]/packages/mcp-bridge/mcp-proxy.js` 作为命令
3. **执行操作**:
- - 通过 AI 编辑器发送 MCP 请求
- - 或在测试面板中直接测试工具
+ - 通过 AI 编辑器发送 MCP 请求
+ - 或在测试面板中直接测试工具
### 6.3 配置选项
@@ -366,30 +377,30 @@ manageAsset(args, callback) {
### 7.1 添加新工具
1. **在 `main.js` 中注册工具**:
- - 在 `/list-tools` 响应中添加工具定义
- - 在 `handleMcpCall` 函数中添加处理逻辑
+ - 在 `/list-tools` 响应中添加工具定义
+ - 在 `handleMcpCall` 函数中添加处理逻辑
2. **在面板中添加示例**:
- - 在 `panel/index.js` 中添加工具示例参数
- - 更新工具列表
+ - 在 `panel/index.js` 中添加工具示例参数
+ - 更新工具列表
3. **更新文档**:
- - 在 `README.md` 中添加工具文档
- - 更新功能特性列表
+ - 在 `README.md` 中添加工具文档
+ - 更新功能特性列表
### 7.2 集成新 API
1. **了解 Cocos Creator API**:
- - 查阅 Cocos Creator 编辑器 API 文档
- - 了解场景脚本 API
+ - 查阅 Cocos Creator 编辑器 API 文档
+ - 了解场景脚本 API
2. **实现集成**:
- - 在 `main.js` 或 `scene-script.js` 中添加对应功能
- - 处理异步操作和错误情况
+ - 在 `main.js` 或 `scene-script.js` 中添加对应功能
+ - 处理异步操作和错误情况
3. **测试验证**:
- - 编写测试用例
- - 验证功能正确性
+ - 编写测试用例
+ - 验证功能正确性
## 8. 版本管理
@@ -416,69 +427,69 @@ manageAsset(args, callback) {
## 10. 最佳实践
1. **代码组织**:
- - 模块化设计,职责分离
- - 合理使用回调函数处理异步操作
+ - 模块化设计,职责分离
+ - 合理使用回调函数处理异步操作
2. **错误处理**:
- - 完善的错误捕获和处理
- - 详细的错误日志记录
+ - 完善的错误捕获和处理
+ - 详细的错误日志记录
3. **用户体验**:
- - 直观的面板界面
- - 实时的操作反馈
- - 详细的日志信息
+ - 直观的面板界面
+ - 实时的操作反馈
+ - 详细的日志信息
4. **安全性**:
- - 验证输入参数
- - 防止路径遍历攻击
- - 限制服务访问范围
+ - 验证输入参数
+ - 防止路径遍历攻击
+ - 限制服务访问范围
## 11. 开发路线图 (Roadmap)
### 11.1 第三阶段开发计划(已完成)
-| 任务 | 状态 | 描述 |
-|------|------|------|
-| 编辑器管理工具实现 | ✅ 完成 | 实现 manage_editor 工具,支持编辑器状态控制和操作执行 |
-| 游戏对象查找工具实现 | ✅ 完成 | 实现 find_gameobjects 工具,支持根据条件查找场景节点 |
+| 任务 | 状态 | 描述 |
+| ---------------------- | ------- | ------------------------------------------------------------------- |
+| 编辑器管理工具实现 | ✅ 完成 | 实现 manage_editor 工具,支持编辑器状态控制和操作执行 |
+| 游戏对象查找工具实现 | ✅ 完成 | 实现 find_gameobjects 工具,支持根据条件查找场景节点 |
| 材质和纹理管理工具实现 | ✅ 完成 | 实现 manage_material 和 manage_texture 工具,支持材质和纹理资源管理 |
-| 菜单项执行工具实现 | ✅ 完成 | 实现 execute_menu_item 工具,支持执行 Cocos Creator 菜单项 |
-| 代码编辑增强工具实现 | ✅ 完成 | 实现 apply_text_edits 工具,支持文本编辑操作应用 |
-| 控制台读取工具实现 | ✅ 完成 | 实现 read_console 工具,支持读取编辑器控制台输出 |
-| 脚本验证工具实现 | ✅ 完成 | 实现 validate_script 工具,支持脚本语法验证 |
+| 菜单项执行工具实现 | ✅ 完成 | 实现 execute_menu_item 工具,支持执行 Cocos Creator 菜单项 |
+| 代码编辑增强工具实现 | ✅ 完成 | 实现 apply_text_edits 工具,支持文本编辑操作应用 |
+| 控制台读取工具实现 | ✅ 完成 | 实现 read_console 工具,支持读取编辑器控制台输出 |
+| 脚本验证工具实现 | ✅ 完成 | 实现 validate_script 工具,支持脚本语法验证 |
### 11.2 第四阶段开发计划(已完成)
-| 任务 | 状态 | 描述 |
-|------|------|------|
+| 任务 | 状态 | 描述 |
+| ------------ | ------- | ---------------------------------------------- |
| 测试功能实现 | ✅ 完成 | 实现 run_tests.js 脚本,支持运行自动化测试用例 |
-| 错误处理增强 | ✅ 完成 | 完善 HTTP 服务和工具调用的错误日志记录 |
+| 错误处理增强 | ✅ 完成 | 完善 HTTP 服务和工具调用的错误日志记录 |
### 11.3 差异填补阶段(Gap Filling)- 已完成
-| 任务 | 状态 | 描述 |
-|------|------|------|
-| 特效管理 | ✅ 完成 | 实现 manage_vfx 工具,支持粒子系统管理 |
-| 文件哈希 | ✅ 完成 | 实现 get_sha 工具,支持文件 SHA-256 计算 |
+| 任务 | 状态 | 描述 |
+| -------- | ------- | ---------------------------------------------- |
+| 特效管理 | ✅ 完成 | 实现 manage_vfx 工具,支持粒子系统管理 |
+| 文件哈希 | ✅ 完成 | 实现 get_sha 工具,支持文件 SHA-256 计算 |
| 动画管理 | ✅ 完成 | 实现 manage_animation 工具,支持动画播放与控制 |
### 11.4 第六阶段:可靠性与体验优化(已完成)
-| 任务 | 状态 | 描述 |
-|------|------|------|
-| IPC 工具增强 | ✅ 完成 | 修复 IpcManager 返回值解析,优化测试面板 (JSON 参数、筛选) |
-| 脚本可靠性修复 | ✅ 完成 | 解决脚本编译时序导致的挂载失败问题 (文档引导 + 刷新机制) |
+| 任务 | 状态 | 描述 |
+| ---------------- | ------- | -------------------------------------------------------------------------- |
+| IPC 工具增强 | ✅ 完成 | 修复 IpcManager 返回值解析,优化测试面板 (JSON 参数、筛选) |
+| 脚本可靠性修复 | ✅ 完成 | 解决脚本编译时序导致的挂载失败问题 (文档引导 + 刷新机制) |
| 组件智能解析修复 | ✅ 完成 | 修复组件属性赋值时的 UUID 类型转换,支持压缩 UUID 及自定义组件 (`$_$ctor`) |
### 11.5 第七阶段开发计划(已完成)
-| 任务 | 状态 | 描述 |
-|------|------|------|
-| 插件发布 | ✅ 完成 | 准备发布,提交到 Cocos 插件商店 |
-| 文档完善 | ✅ 完成 | 完善 API 文档 ("Getting Started" 教程) |
-| 界面美化 | ✅ 完成 | 优化面板 UI 体验 |
+| 任务 | 状态 | 描述 |
+| ---------- | ------- | ----------------------------------------- |
+| 插件发布 | ✅ 完成 | 准备发布,提交到 Cocos 插件商店 |
+| 文档完善 | ✅ 完成 | 完善 API 文档 ("Getting Started" 教程) |
+| 界面美化 | ✅ 完成 | 优化面板 UI 体验 |
| 国际化支持 | ✅ 完成 | 添加多语言 (i18n) 支持 (主要是中文本地化) |
-| 工具扩展 | ✅ 完成 | 添加更多高级工具 |
+| 工具扩展 | ✅ 完成 | 添加更多高级工具 |
## 12. Unity-MCP 对比分析
@@ -486,33 +497,33 @@ manageAsset(args, callback) {
通过与 Unity-MCP 对比,Cocos-MCP 已实现绝大多数核心功能。
-| 功能类别 | Unity-MCP 功能 | Cocos-MCP 状态 | 备注 |
-|---------|---------------|---------------|------|
-| 编辑器管理 | manage_editor | ✅ 已实现 | |
-| 游戏对象管理 | find_gameobjects | ✅ 已实现 | |
-| 材质管理 | manage_material | ✅ 已实现 | |
-| 纹理管理 | manage_texture | ✅ 已实现 | |
-| 代码编辑 | apply_text_edits | ✅ 已实现 | |
-| 全局搜索 | search_project | ✅ 已实现 | 升级版,支持正则和路径限定 |
-| 控制台 | read_console | ✅ 已实现 | |
-| 菜单执行 | execute_menu_item | ✅ 已实现 | 移除不稳定映射,推荐 delete-node:UUID |
-| 脚本验证 | validate_script | ✅ 已实现 | |
-| 撤销/重做 | undo/redo | ✅ 已实现 | |
-| VFX 管理 | manage_vfx | ✅ 已实现 | |
-| Git 集成 | get_sha | ✅ 已实现 | 虽然优先级中等,但已根据需求完成 |
-| 动画管理 | manage_animation | ✅ 已实现 | 支持播放、暂停、停止及信息获取 |
-| ScriptableObject | manage_so | ❌ 未实现 | 使用 AssetDB 替代 |
+| 功能类别 | Unity-MCP 功能 | Cocos-MCP 状态 | 备注 |
+| ---------------- | ----------------- | -------------- | ------------------------------------- |
+| 编辑器管理 | manage_editor | ✅ 已实现 | |
+| 游戏对象管理 | find_gameobjects | ✅ 已实现 | |
+| 材质管理 | manage_material | ✅ 已实现 | |
+| 纹理管理 | manage_texture | ✅ 已实现 | |
+| 代码编辑 | apply_text_edits | ✅ 已实现 | |
+| 全局搜索 | search_project | ✅ 已实现 | 升级版,支持正则和路径限定 |
+| 控制台 | read_console | ✅ 已实现 | |
+| 菜单执行 | execute_menu_item | ✅ 已实现 | 移除不稳定映射,推荐 delete-node:UUID |
+| 脚本验证 | validate_script | ✅ 已实现 | |
+| 撤销/重做 | undo/redo | ✅ 已实现 | |
+| VFX 管理 | manage_vfx | ✅ 已实现 | |
+| Git 集成 | get_sha | ✅ 已实现 | 虽然优先级中等,但已根据需求完成 |
+| 动画管理 | manage_animation | ✅ 已实现 | 支持播放、暂停、停止及信息获取 |
+| ScriptableObject | manage_so | ❌ 未实现 | 使用 AssetDB 替代 |
## 13. 风险评估
### 13.1 潜在风险
-| 风险 | 影响 | 缓解措施 |
-|------|------|----------|
-| 编辑器 API 变更 | 插件功能失效 | 定期检查 Cocos 更新,适配新 API |
-| 性能问题 | 插件响应缓慢 | 优化批处理 (batch_execute),减少 IPC 通讯 |
-| 安全漏洞 | 未授权访问 | (规划中) 面板设置 IP 白名单/Token 认证 |
-| 兼容性问题 | 多版本不兼容 | 测试主流版本 (2.4.x),提供兼容层 |
+| 风险 | 影响 | 缓解措施 |
+| --------------- | ------------ | ----------------------------------------- |
+| 编辑器 API 变更 | 插件功能失效 | 定期检查 Cocos 更新,适配新 API |
+| 性能问题 | 插件响应缓慢 | 优化批处理 (batch_execute),减少 IPC 通讯 |
+| 安全漏洞 | 未授权访问 | (规划中) 面板设置 IP 白名单/Token 认证 |
+| 兼容性问题 | 多版本不兼容 | 测试主流版本 (2.4.x),提供兼容层 |
## 14. 结论
diff --git a/IPC_MESSAGES.md b/IPC_MESSAGES.md
index bc0aa64..a85f1c3 100644
--- a/IPC_MESSAGES.md
+++ b/IPC_MESSAGES.md
@@ -15,12 +15,13 @@
- [Metrics相关IPC消息](#metrics相关ipc消息)
- [Package Template相关IPC消息](#package-template相关ipc消息)
- [Additional Scene相关IPC消息](#additional-scene相关ipc消息)
-- [Broadcast Events](#broadcast-events)
-- [Events listened by Renderer Process](#events-listened-by-renderer-process)
+- [广播事件](#广播事件)
+- [渲染进程监听的事件](#渲染进程监听的事件)
## App相关IPC消息
### `app:explore-project`
+
- **用途**: 打开项目所在文件夹
- **参数**: 无
- **返回值**: 无
@@ -28,6 +29,7 @@
- **状态**: 可用
### `app:explore-app`
+
- **用途**: 打开应用程序所在文件夹
- **参数**: 无
- **返回值**: 无
@@ -35,6 +37,7 @@
- **状态**: 可用
### `app:build-project`
+
- **用途**: 构建项目
- **参数**: 包含构建选项的对象
- **返回值**: 无
@@ -42,6 +45,7 @@
- **状态**: 可用
### `app:query-cocos-templates`
+
- **用途**: 查询Cocos模板
- **参数**: 无
- **返回值**: 模板列表
@@ -49,6 +53,7 @@
- **状态**: 可用
### `app:query-android-apilevels`
+
- **用途**: 查询Android API级别
- **参数**: 无
- **返回值**: API级别列表
@@ -56,6 +61,7 @@
- **状态**: 可用
### `app:query-android-instant-apilevels`
+
- **用途**: 查询Android Instant API级别
- **参数**: 无
- **返回值**: API级别列表
@@ -63,6 +69,7 @@
- **状态**: 可用
### `app:compile-project`
+
- **用途**: 编译项目
- **参数**: 编译选项对象
- **返回值**: 无
@@ -70,6 +77,7 @@
- **状态**: 可用
### `app:open-cocos-console-log`
+
- **用途**: 打开Cocos控制台日志
- **参数**: 无
- **返回值**: 无
@@ -77,6 +85,7 @@
- **状态**: 可用
### `app:stop-compile`
+
- **用途**: 停止编译
- **参数**: 无
- **返回值**: 无
@@ -84,6 +93,7 @@
- **状态**: 可用
### `app:run-project`
+
- **用途**: 运行项目
- **参数**: 包含平台信息的对象
- **返回值**: 无
@@ -91,6 +101,7 @@
- **状态**: 可用
### `app:save-keystore`
+
- **用途**: 保存密钥库
- **参数**: 密钥库信息
- **返回值**: 错误信息或成功确认
@@ -98,6 +109,7 @@
- **状态**: 可用
### `app:update-build-preview-path`
+
- **用途**: 更新构建预览路径
- **参数**: 预览路径
- **返回值**: 无
@@ -105,6 +117,7 @@
- **状态**: 可用
### `app:update-android-instant-preview-path`
+
- **用途**: 更新Android Instant预览路径
- **参数**: 预览路径
- **返回值**: 无
@@ -112,6 +125,7 @@
- **状态**: 可用
### `app:play-on-device`
+
- **用途**: 在设备上播放
- **参数**: 平台信息
- **返回值**: 无
@@ -119,6 +133,7 @@
- **状态**: 可用
### `app:reload-on-device`
+
- **用途**: 在设备上重新加载
- **参数**: 无
- **返回值**: 无
@@ -126,6 +141,7 @@
- **状态**: 可用
### `app:query-plugin-scripts`
+
- **用途**: 查询插件脚本
- **参数**: 构建平台名称
- **返回值**: 插件脚本列表
@@ -133,6 +149,7 @@
- **状态**: 可用
### `app:rebuild-editor-engine`
+
- **用途**: 重建编辑器引擎
- **参数**: 回调函数
- **返回值**: 错误信息
@@ -142,6 +159,7 @@
## Asset-DB相关IPC消息
### `asset-db:explore`
+
- **用途**: 打开资源所在文件夹
- **参数**: 资源URL
- **返回值**: 无
@@ -149,6 +167,7 @@
- **状态**: 可用
### `asset-db:exists`
+
- **用途**: 查询资源是否存在
- **参数**: 资源URL
- **返回值**: 存在性布尔值
@@ -156,6 +175,7 @@
- **状态**: 可用
### `asset-db:query-path-by-url`
+
- **用途**: 根据URL查询路径
- **参数**: 资源URL
- **返回值**: 文件系统路径
@@ -163,6 +183,7 @@
- **状态**: 可用
### `asset-db:query-uuid-by-url`
+
- **用途**: 根据URL查询UUID
- **参数**: 资源URL
- **返回值**: UUID字符串
@@ -170,6 +191,7 @@
- **状态**: 可用
### `asset-db:query-path-by-uuid`
+
- **用途**: 根据UUID查询路径
- **参数**: UUID字符串
- **返回值**: 文件系统路径
@@ -177,6 +199,7 @@
- **状态**: 可用
### `asset-db:query-url-by-uuid`
+
- **用途**: 根据UUID查询URL
- **参数**: UUID字符串
- **返回值**: 资源URL
@@ -184,6 +207,7 @@
- **状态**: 可用
### `asset-db:query-info-by-uuid`
+
- **用途**: 根据UUID查询资源信息
- **参数**: UUID字符串
- **返回值**: 资源信息对象
@@ -191,6 +215,7 @@
- **状态**: 可用
### `asset-db:query-meta-info-by-uuid`
+
- **用途**: 根据UUID查询元数据信息
- **参数**: UUID字符串
- **返回值**: 元数据信息对象
@@ -198,6 +223,7 @@
- **状态**: 可用
### `asset-db:deep-query`
+
- **用途**: 深度查询资源
- **参数**: 无
- **返回值**: 完整资源数据库信息
@@ -205,6 +231,7 @@
- **状态**: 可用
### `asset-db:query-assets`
+
- **用途**: 查询资源
- **参数**: 查询条件、类型
- **返回值**: 资源列表
@@ -212,6 +239,7 @@
- **状态**: 可用
### `asset-db:query-mounts`
+
- **用途**: 查询挂载点
- **参数**: 无
- **返回值**: 挂载点列表
@@ -219,6 +247,7 @@
- **状态**: 可用
### `asset-db:import-assets`
+
- **参数**: 导入路径列表、目标路径、刷新标志
- **用途**: 导入资源
- **返回值**: 无
@@ -226,6 +255,7 @@
- **状态**: 可用
### `asset-db:create-asset`
+
- **用途**: 创建资源
- **参数**: URL、内容
- **返回值**: 错误信息或创建结果
@@ -233,6 +263,7 @@
- **状态**: 可用
### `asset-db:move-asset`
+
- **用途**: 移动资源
- **参数**: 源URL、目标URL、是否显示错误对话框
- **返回值**: 错误信息或移动结果
@@ -240,6 +271,7 @@
- **状态**: 可用
### `asset-db:delete-assets`
+
- **用途**: 删除资源
- **参数**: URL数组
- **返回值**: 错误信息或删除结果
@@ -247,6 +279,7 @@
- **状态**: 可用
### `asset-db:save-exists`
+
- **用途**: 保存已存在的资源
- **参数**: URL、内容
- **返回值**: 错误信息或保存结果
@@ -254,6 +287,7 @@
- **状态**: 可用
### `asset-db:create-or-save`
+
- **用途**: 创建或保存资源
- **参数**: URL、内容
- **返回值**: 错误信息或操作结果
@@ -261,6 +295,7 @@
- **状态**: 可用
### `asset-db:save-meta`
+
- **用途**: 保存元数据
- **参数**: UUID、元数据对象
- **返回值**: 无
@@ -268,6 +303,7 @@
- **状态**: 可用
### `asset-db:refresh`
+
- **用途**: 刷新资源
- **参数**: 路径(可选)
- **返回值**: 错误信息或刷新结果
@@ -275,6 +311,7 @@
- **状态**: 可用
### `asset-db:attach-mountpath`
+
- **用途**: 挂载路径
- **参数**: 挂载路径对象
- **返回值**: 错误信息或挂载结果
@@ -282,6 +319,7 @@
- **状态**: 可用
### `asset-db:unattach-mountpath`
+
- **用途**: 取消挂载路径
- **参数**: 挂载路径
- **返回值**: 错误信息或取消挂载结果
@@ -289,6 +327,7 @@
- **状态**: 可用
### `asset-db:query-watch-state`
+
- **用途**: 查询监听状态
- **参数**: 无
- **返回值**: 无(向主窗口发送状态)
@@ -296,6 +335,7 @@
- **状态**: 可用
### `asset-db:asset-changed`
+
- **用途**: 资源变更处理
- **参数**: 变更详情
- **返回值**: 无
@@ -303,6 +343,7 @@
- **状态**: 可用
### `asset-db:asset-uuid-changed`
+
- **用途**: 资源UUID变更处理
- **参数**: 变更详情
- **返回值**: 无
@@ -310,6 +351,7 @@
- **状态**: 可用
### `asset-db:assets-moved`
+
- **用途**: 资源移动处理
- **参数**: 移动详情数组
- **返回值**: 无
@@ -317,6 +359,7 @@
- **状态**: 可用
### `asset-db:assets-created`
+
- **用途**: 资源创建处理
- **参数**: 创建详情数组
- **返回值**: 无
@@ -324,6 +367,7 @@
- **状态**: 可用
### `asset-db:assets-deleted`
+
- **用途**: 资源删除处理
- **参数**: 删除详情数组
- **返回值**: 无
@@ -331,6 +375,7 @@
- **状态**: 可用
### `asset-db:script-import-failed`
+
- **用途**: 脚本导入失败处理
- **参数**: 失败详情
- **返回值**: 无
@@ -338,6 +383,7 @@
- **状态**: 可用
### `asset-db:meta-backup`
+
- **用途**: 元数据备份处理
- **参数**: 备份详情数组
- **返回值**: 无
@@ -347,6 +393,7 @@
## Dashboard相关IPC消息
### `app:query-recent`
+
- **用途**: 查询最近打开的项目
- **参数**: 无
- **返回值**: 最近项目列表
@@ -354,6 +401,7 @@
- **状态**: 不可用 (无响应)
### `app:query-templates`
+
- **用途**: 查询项目模板
- **参数**: 无
- **返回值**: 模板列表
@@ -361,6 +409,7 @@
- **状态**: 不可用 (无响应)
### `app:create-project`
+
- **用途**: 创建项目
- **参数**: 项目配置对象
- **返回值**: 错误信息或创建结果
@@ -368,6 +417,7 @@
- **状态**: 不可用 (无响应)
### `app:open-project`
+
- **用途**: 打开项目
- **参数**: 项目路径、是否需要登录
- **返回值**: 错误信息或打开结果
@@ -375,6 +425,7 @@
- **状态**: 不可用 (无响应)
### `app:delete-project`
+
- **用途**: 删除项目
- **参数**: 项目路径
- **返回值**: 无
@@ -382,6 +433,7 @@
- **状态**: 不可用 (无响应)
### `app:close-project`
+
- **用途**: 关闭项目
- **参数**: 项目路径
- **返回值**: 无
@@ -389,6 +441,7 @@
- **状态**: 不可用 (无响应)
### `app:window-minimize`
+
- **用途**: 最小化窗口
- **参数**: 无
- **返回值**: 无
@@ -396,6 +449,7 @@
- **状态**: 不可用 (无响应)
### `app:window-close`
+
- **用途**: 关闭窗口
- **参数**: 无
- **返回值**: 无
@@ -403,6 +457,7 @@
- **状态**: 不可用 (无响应)
### `app:get-last-create`
+
- **用途**: 获取上次创建的项目
- **参数**: 无
- **返回值**: 上次创建的项目信息
@@ -410,6 +465,7 @@
- **状态**: 不可用 (无响应)
### `app:open-manual-doc`
+
- **用途**: 打开手册文档
- **参数**: 文档路径
- **返回值**: 无
@@ -417,6 +473,7 @@
- **状态**: 不可用 (无响应)
### `app:open-api-doc`
+
- **用途**: 打开API文档
- **参数**: 文档路径
- **返回值**: 无
@@ -424,6 +481,7 @@
- **状态**: 不可用 (无响应)
### `app:query-last-create-path`
+
- **用途**: 查询上次创建的路径
- **参数**: 无
- **返回值**: 上次创建的路径
@@ -433,6 +491,7 @@
## Scene相关IPC消息
### `scene:is-ready`
+
- **用途**: 检查场景编辑器是否准备就绪
- **参数**: 无
- **返回值**: 准备就绪状态
@@ -440,6 +499,7 @@
- **状态**: 不可用 (无响应)
### `scene:new-scene`
+
- **用途**: 创建新场景
- **参数**: 无
- **返回值**: 无
@@ -447,6 +507,7 @@
- **状态**: 不可用 (无响应)
### `scene:saved`
+
- **用途**: 场景保存完成后的通知
- **参数**: 无
- **返回值**: 无
@@ -454,6 +515,7 @@
- **状态**: 未测试
### `scene:play-on-device`
+
- **用途**: 在设备上播放场景
- **参数**: 无
- **返回值**: 无
@@ -461,6 +523,7 @@
- **状态**: 未测试
### `scene:reload-on-device`
+
- **用途**: 在设备上重新加载场景
- **参数**: 无
- **返回值**: 无
@@ -468,6 +531,7 @@
- **状态**: 未测试
### `scene:preview-server-scene-stashed`
+
- **用途**: 预览服务器场景暂存
- **参数**: 无
- **返回值**: 无
@@ -475,6 +539,7 @@
- **状态**: 不可用 (无响应)
### `scene:load-package-scene-script`
+
- **用途**: 加载包场景脚本
- **参数**: 脚本路径、包名
- **返回值**: 无
@@ -482,6 +547,7 @@
- **状态**: 不可用 (无响应)
### `scene:unload-package-scene-script`
+
- **用途**: 卸载包场景脚本
- **参数**: 脚本路径
- **返回值**: 无
@@ -489,6 +555,7 @@
- **状态**: 不可用 (无响应)
### `scene:soft-reload`
+
- **用途**: 软重载场景
- **参数**: 重载参数
- **返回值**: 无
@@ -496,6 +563,7 @@
- **状态**: 不可用 (无响应)
### `scene:enter-prefab-edit-mode`
+
- **用途**: 进入预制件编辑模式
- **参数**: 预制件UUID
- **返回值**: 无
@@ -503,6 +571,7 @@
- **状态**: 可用
### `scene:stash-and-save`
+
- **用途**: 暂存并保存场景
- **参数**: 无
- **返回值**: 无
@@ -510,6 +579,7 @@
- **状态**: 不可用 (无响应)
### `scene:print-simulator-log`
+
- **用途**: 打印模拟器日志
- **参数**: 日志信息、日志类型
- **返回值**: 无
@@ -517,6 +587,7 @@
- **状态**: 不可用 (无响应)
### `scene:generate-texture-packer-preview-files`
+
- **用途**: 生成纹理打包预览文件
- **参数**: 资源路径
- **返回值**: 错误信息或操作结果
@@ -524,6 +595,7 @@
- **状态**: 不可用 (无响应)
### `scene:query-texture-packer-preview-files`
+
- **用途**: 查询纹理打包预览文件
- **参数**: 资源路径
- **返回值**: 预览文件信息
@@ -531,6 +603,7 @@
- **状态**: 可用
### `scene:export-particle-plist`
+
- **用途**: 导出粒子plist文件
- **参数**: 粒子数据
- **返回值**: 无
@@ -538,6 +611,7 @@
- **状态**: 可用
### `scene:update-edit-mode`
+
- **用途**: 更新编辑模式
- **参数**: 编辑模式信息
- **返回值**: 无
@@ -545,6 +619,7 @@
- **状态**: 可用
### `scene:undo`
+
- **用途**: 撤销操作
- **参数**: 无
- **返回值**: 无
@@ -552,6 +627,7 @@
- **状态**: 可用
### `scene:redo`
+
- **用途**: 重做操作
- **参数**: 无
- **返回值**: 无
@@ -559,6 +635,7 @@
- **状态**: 可用
### `scene:undo-record`
+
- **用途**: 记录撤销操作
- **参数**: 对象ID、操作信息
- **返回值**: 无
@@ -566,6 +643,7 @@
- **状态**: 可用
### `scene:undo-commit`
+
- **用途**: 提交撤销操作
- **参数**: 无
- **返回值**: 无
@@ -573,6 +651,7 @@
- **状态**: 可用
### `scene:undo-cancel`
+
- **用途**: 取消撤销操作
- **参数**: 无
- **返回值**: 无
@@ -580,6 +659,7 @@
- **状态**: 可用
### `scene:query-dirty-state`
+
- **用途**: 查询场景脏状态
- **参数**: 无
- **返回值**: 脏状态信息
@@ -587,6 +667,7 @@
- **状态**: 可用
### `scene:query-group-list`
+
- **用途**: 查询分组列表
- **参数**: 无
- **返回值**: 分组列表
@@ -594,6 +675,7 @@
- **状态**: 可用
### `scene:query-hierarchy`
+
- **用途**: 查询场景层级结构
- **参数**: 无
- **返回值**: 场景UUID和节点层次
@@ -601,6 +683,7 @@
- **状态**: 可用
### `scene:query-nodes-by-comp-name`
+
- **用途**: 根据组件名称查询节点
- **参数**: 组件名称
- **返回值**: 节点UUID列表
@@ -608,6 +691,7 @@
- **状态**: 可用
### `scene:query-node`
+
- **用途**: 查询节点信息
- **参数**: 节点UUID
- **返回值**: 节点信息
@@ -615,6 +699,7 @@
- **状态**: 可用
### `scene:query-node-info`
+
- **用途**: 查询节点详细信息
- **参数**: 节点UUID、类型
- **返回值**: 节点详细信息
@@ -622,6 +707,7 @@
- **状态**: 可用
### `scene:query-node-functions`
+
- **用途**: 查询节点函数
- **参数**: 节点UUID
- **返回值**: 节点函数列表
@@ -629,6 +715,7 @@
- **状态**: 可用
### `scene:choose-last-rigid-body`
+
- **用途**: 选择上一个刚体
- **参数**: 当前节点UUID
- **返回值**: 无
@@ -636,6 +723,7 @@
- **状态**: 可用
### `scene:choose-next-rigid-body`
+
- **用途**: 选择下一个刚体
- **参数**: 当前节点UUID
- **返回值**: 无
@@ -643,6 +731,7 @@
- **状态**: 可用
### `scene:is-child-class-of`
+
- **用途**: 检查是否为子类
- **参数**: 类ID、父类ID
- **返回值**: 是否为子类的布尔值
@@ -650,6 +739,7 @@
- **状态**: 可用
### `scene:has-copied-component`
+
- **用途**: 检查是否有复制的组件
- **参数**: 无
- **返回值**: 是否有复制组件的布尔值
@@ -657,6 +747,7 @@
- **状态**: 可用
### `scene:query-animation-hierarchy`
+
- **用途**: 查询动画层级
- **参数**: 节点UUID
- **返回值**: 动画层级结构
@@ -664,6 +755,7 @@
- **状态**: 可用
### `scene:query-animation-list`
+
- **用途**: 查询动画列表
- **参数**: 节点UUID
- **返回值**: 动画剪辑UUID列表
@@ -671,6 +763,7 @@
- **状态**: 可用
### `scene:query-animation-properties`
+
- **用途**: 查询动画属性
- **参数**: 节点UUID
- **返回值**: 动画属性列表
@@ -678,6 +771,7 @@
- **状态**: 可用
### `scene:query-animation-record`
+
- **用途**: 查询动画记录状态
- **参数**: 无
- **返回值**: 动画记录状态信息
@@ -685,6 +779,7 @@
- **状态**: 可用
### `scene:query-animation-clip`
+
- **用途**: 查询动画剪辑
- **参数**: 动画剪辑UUID
- **返回值**: 动画剪辑序列化数据
@@ -692,6 +787,7 @@
- **状态**: 可用
### `scene:query-asset-info`
+
- **用途**: 查询资源信息
- **参数**: 资源UUID
- **返回值**: 资源信息
@@ -699,6 +795,7 @@
- **状态**: 可用
### `scene:query-nodes-by-usedby-uuid`
+
- **用途**: 根据使用的资源UUID查询节点
- **参数**: 资源UUID
- **返回值**: 使用该资源的节点UUID列表
@@ -706,6 +803,7 @@
- **状态**: 可用
### `scene:create-nodes-by-uuids`
+
- **用途**: 根据UUID创建节点
- **参数**: UUID列表、位置、父节点、选项
- **返回值**: 无
@@ -713,6 +811,7 @@
- **状态**: 可用
### `scene:create-node-by-classid`
+
- **用途**: 根据类ID创建节点
- **参数**: 类ID、位置、父节点、选项
- **返回值**: 无
@@ -720,6 +819,7 @@
- **状态**: 可用
### `scene:create-node-by-prefab`
+
- **用途**: 根据预制件创建节点
- **参数**: 预制件名称、位置、父节点、选项
- **返回值**: 无
@@ -727,6 +827,7 @@
- **状态**: 可用
### `scene:new-property`
+
- **用途**: 创建新属性
- **参数**: 属性信息
- **返回值**: 无
@@ -734,6 +835,7 @@
- **状态**: 可用
### `scene:reset-property`
+
- **用途**: 重置属性
- **参数**: 属性信息
- **返回值**: 无
@@ -741,6 +843,7 @@
- **状态**: 可用
### `scene:set-property`
+
- **用途**: 设置属性
- **参数**: 属性信息
- **返回值**: 无
@@ -748,6 +851,7 @@
- **状态**: 可用
### `scene:add-component`
+
- **用途**: 添加组件
- **参数**: 节点UUID、组件名称
- **返回值**: 无
@@ -755,6 +859,7 @@
- **状态**: 可用
### `scene:remove-component`
+
- **用途**: 移除组件
- **参数**: 节点UUID、组件ID
- **返回值**: 无
@@ -762,6 +867,7 @@
- **状态**: 可用
### `scene:reset-node`
+
- **用途**: 重置节点
- **参数**: 节点UUID
- **返回值**: 无
@@ -769,6 +875,7 @@
- **状态**: 可用
### `scene:reset-all`
+
- **用途**: 重置所有组件
- **参数**: 节点UUID
- **返回值**: 无
@@ -776,6 +883,7 @@
- **状态**: 可用
### `scene:move-up-component`
+
- **用途**: 向上移动组件
- **参数**: 节点UUID、组件ID
- **返回值**: 无
@@ -783,6 +891,7 @@
- **状态**: 可用
### `scene:move-down-component`
+
- **用途**: 向下移动组件
- **参数**: 节点UUID、组件ID
- **返回值**: 无
@@ -790,6 +899,7 @@
- **状态**: 可用
### `scene:reset-component`
+
- **用途**: 重置组件
- **参数**: 节点UUID、组件ID
- **返回值**: 无
@@ -797,6 +907,7 @@
- **状态**: 可用
### `scene:copy-component`
+
- **用途**: 复制组件
- **参数**: 组件ID
- **返回值**: 无
@@ -804,6 +915,7 @@
- **状态**: 可用
### `scene:paste-component`
+
- **用途**: 粘贴组件
- **参数**: 节点UUID
- **返回值**: 无
@@ -811,6 +923,7 @@
- **状态**: 可用
### `scene:move-nodes`
+
- **用途**: 移动节点
- **参数**: 节点UUID列表、位置、父节点
- **返回值**: 无
@@ -818,6 +931,7 @@
- **状态**: 不可用 (无响应)
### `scene:delete-nodes`
+
- **用途**: 删除节点
- **参数**: 节点UUID列表
- **返回值**: 无
@@ -825,6 +939,7 @@
- **状态**: 不可用 (无响应)
### `scene:copy-nodes`
+
- **用途**: 复制节点
- **参数**: 节点UUID列表
- **返回值**: 无
@@ -832,6 +947,7 @@
- **状态**: 不可用 (无响应)
### `scene:paste-nodes`
+
- **用途**: 粘贴节点
- **参数**: 无
- **返回值**: 无
@@ -839,6 +955,7 @@
- **状态**: 不可用 (无响应)
### `scene:duplicate-nodes`
+
- **用途**: 复制节点(Duplicate)
- **参数**: 节点UUID列表
- **返回值**: 无
@@ -846,6 +963,7 @@
- **状态**: 不可用 (无响应)
### `scene:create-prefab`
+
- **用途**: 创建预制件
- **参数**: 节点UUID、预制件路径
- **返回值**: 无
@@ -853,6 +971,7 @@
- **状态**: 可用
### `scene:apply-prefab`
+
- **用途**: 应用预制件
- **参数**: 节点UUID、预制件路径
- **返回值**: 无
@@ -860,6 +979,7 @@
- **状态**: 可用
### `scene:revert-prefab`
+
- **用途**: 还原预制件
- **参数**: 节点UUID、预制件路径
- **返回值**: 无
@@ -867,6 +987,7 @@
- **状态**: 不可用 (无响应)
### `scene:set-prefab-sync`
+
- **用途**: 设置预制件同步
- **参数**: 节点UUID
- **返回值**: 无
@@ -874,6 +995,7 @@
- **状态**: 不可用 (无响应)
### `scene:break-prefab-instance`
+
- **用途**: 打破预制件实例关联
- **参数**: 无
- **返回值**: 无
@@ -881,6 +1003,7 @@
- **状态**: 不可用 (无响应)
### `scene:link-prefab`
+
- **用途**: 链接预制件
- **参数**: 无
- **返回值**: 无
@@ -888,6 +1011,7 @@
- **状态**: 不可用 (无响应)
### `scene:regenerate-polygon-points`
+
- **用途**: 重新生成多边形点
- **参数**: 节点UUID
- **返回值**: 无
@@ -895,6 +1019,7 @@
- **状态**: 不可用 (无响应)
### `scene:search-skeleton-animation-clips`
+
- **用途**: 搜索骨骼动画剪辑
- **参数**: 节点UUID
- **返回值**: 无
@@ -902,6 +1027,7 @@
- **状态**: 不可用 (无响应)
### `scene:change-node-lock`
+
- **用途**: 更改节点锁定状态
- **参数**: 节点UUID、锁定状态
- **返回值**: 无
@@ -909,6 +1035,7 @@
- **状态**: 不可用 (无响应)
### `scene:copy-editor-camera-data-to-nodes`
+
- **用途**: 将编辑器相机数据复制到节点
- **参数**: 无
- **返回值**: 无
@@ -916,6 +1043,7 @@
- **状态**: 可用
### `scene:set-group-sync`
+
- **用途**: 设置组同步
- **参数**: 节点UUID、组名
- **返回值**: 无
@@ -923,6 +1051,7 @@
- **状态**: 不可用 (无响应)
### `scene:generate_attached_node`
+
- **用途**: 生成附加节点
- **参数**: 节点UUID
- **返回值**: 无
@@ -932,6 +1061,7 @@
## Editor相关IPC消息
### `editor:dragstart`
+
- **用途**: 开始拖拽操作
- **参数**: 无
- **返回值**: 无
@@ -939,6 +1069,7 @@
- **状态**: 不可用 (无响应)
### `editor:dragend`
+
- **用途**: 结束拖拽操作
- **参数**: 无
- **返回值**: 无
@@ -946,6 +1077,7 @@
- **状态**: 不可用 (无响应)
### `editor:project-profile-updated`
+
- **用途**: 项目配置文件更新
- **参数**: 配置对象
- **返回值**: 无
@@ -955,6 +1087,7 @@
## Selection相关IPC消息
### `selection:selected`
+
- **用途**: 选择节点
- **参数**: 类型、ID
- **返回值**: 无
@@ -962,6 +1095,7 @@
- **状态**: 可用
### `selection:unselected`
+
- **用途**: 取消选择节点
- **参数**: 类型、ID
- **返回值**: 无
@@ -969,6 +1103,7 @@
- **状态**: 不可用 (无响应)
### `selection:activated`
+
- **用途**: 激活节点
- **参数**: 类型、ID
- **返回值**: 无
@@ -976,6 +1111,7 @@
- **状态**: 不可用 (无响应)
### `selection:deactivated`
+
- **用途**: 取消激活节点
- **参数**: 类型、ID
- **返回值**: 无
@@ -983,6 +1119,7 @@
- **状态**: 不可用 (无响应)
### `selection:hoverin`
+
- **用途**: 鼠标悬停进入节点
- **参数**: 类型、ID
- **返回值**: 无
@@ -990,6 +1127,7 @@
- **状态**: 不可用 (无响应)
### `selection:hoverout`
+
- **用途**: 鼠标悬停离开节点
- **参数**: 类型、ID
- **返回值**: 无
@@ -999,6 +1137,7 @@
## Scene-Animation相关IPC消息
### `scene-animation:query-animation-time`
+
- **用途**: 查询动画时间
- **参数**: 动画剪辑信息
- **返回值**: 时间信息
@@ -1006,6 +1145,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:animation-time-changed`
+
- **用途**: 动画时间改变
- **参数**: 新的时间值
- **返回值**: 无
@@ -1013,6 +1153,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:animation-clip-changed`
+
- **用途**: 动画剪辑改变
- **参数**: 剪辑信息
- **返回值**: 无
@@ -1020,6 +1161,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:save-clip`
+
- **用途**: 保存动画剪辑
- **参数**: 无
- **返回值**: 无
@@ -1027,6 +1169,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:set-animation-speed`
+
- **用途**: 设置动画速度
- **参数**: 速度值
- **返回值**: 无
@@ -1034,6 +1177,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:change-animation-record`
+
- **用途**: 更改动画记录状态
- **参数**: 记录状态
- **返回值**: 无
@@ -1041,6 +1185,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:mount-clip`
+
- **用途**: 挂载动画剪辑
- **参数**: 剪辑信息、选项
- **返回值**: 无
@@ -1048,6 +1193,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:change-animation-state`
+
- **用途**: 更改动画播放状态
- **参数**: 状态(播放/暂停)
- **返回值**: 无
@@ -1055,6 +1201,7 @@
- **状态**: 不可用 (无响应)
### `scene-animation:change-animation-current-clip`
+
- **用途**: 更改当前动画剪辑
- **参数**: 剪辑信息
- **返回值**: 无
@@ -1064,6 +1211,7 @@
## Scene-Layout相关IPC消息
### `scene-layout:center-nodes`
+
- **用途**: 将摄像机中心对准节点
- **参数**: 节点列表
- **返回值**: 无
@@ -1073,6 +1221,7 @@
## Metrics相关IPC消息
### `metrics:track-event`
+
- **用途**: 跟踪事件
- **参数**: 事件类别、动作、标签等
- **返回值**: 无
@@ -1080,6 +1229,7 @@
- **状态**: 可用
### `editor:renderer-console-error`
+
- **用途**: 发送渲染器控制台错误
- **参数**: 错误堆栈信息
- **返回值**: 无
@@ -1087,6 +1237,7 @@
- **状态**: 可用
### `metrics:track-exception`
+
- **用途**: 跟踪异常
- **参数**: 异常信息
- **返回值**: 无
@@ -1096,6 +1247,7 @@
## Package Template相关IPC消息
### `package-template:clicked`
+
- **用途**: 包模板被点击
- **参数**: 无
- **返回值**: 无
@@ -1103,6 +1255,7 @@
- **状态**: 不可用 (无响应)
### `package-template:hello`
+
- **用途**: 包模板的问候消息
- **参数**: 事件对象
- **返回值**: 无
@@ -1110,6 +1263,7 @@
- **状态**: 未测试
### `package-template:open`
+
- **用途**: 打开包模板面板
- **参数**: 无
- **返回值**: 无
@@ -1117,6 +1271,7 @@
- **状态**: 不可用 (无响应)
### `package-template:say-hello`
+
- **用途**: 发送问候语
- **参数**: 无
- **返回值**: 无
@@ -1126,6 +1281,7 @@
## Additional Scene相关IPC消息
### `asset-db:asset-changed`
+
- **用途**: 资源变更处理
- **参数**: 变更详情
- **返回值**: 无
@@ -1133,6 +1289,7 @@
- **状态**: 可用
### `asset-db:assets-moved`
+
- **用途**: 资源移动处理
- **参数**: 移动详情数组
- **返回值**: 无
@@ -1140,6 +1297,7 @@
- **状态**: 可用
### `asset-db:assets-created`
+
- **用途**: 资源创建处理
- **参数**: 创建详情数组
- **返回值**: 无
@@ -1147,6 +1305,7 @@
- **状态**: 可用
### `asset-db:assets-deleted`
+
- **用途**: 资源删除处理
- **参数**: 删除详情数组
- **返回值**: 无
@@ -1154,6 +1313,7 @@
- **状态**: 可用
### `editor:ready`
+
- **用途**: 编辑器就绪通知
- **参数**: 无
- **返回值**: 无
@@ -1161,6 +1321,7 @@
- **状态**: 未测试
### `editor:console-failed`
+
- **用途**: 控制台失败消息
- **参数**: 失败信息
- **返回值**: 无
@@ -1168,6 +1329,7 @@
- **状态**: 未测试
### `editor:console-warn`
+
- **用途**: 控制台警告消息
- **参数**: 警告信息
- **返回值**: 无
@@ -1175,6 +1337,7 @@
- **状态**: 未测试
### `editor:console-error`
+
- **用途**: 控制台错误消息
- **参数**: 错误信息
- **返回值**: 无
@@ -1182,6 +1345,7 @@
- **状态**: 未测试
### `editor:console-clear`
+
- **用途**: 清空控制台
- **参数**: 无
- **返回值**: 无
@@ -1189,6 +1353,7 @@
- **状态**: 未测试
### `compiler:state-changed`
+
- **用途**: 编译器状态变化
- **参数**: 状态
- **返回值**: 无
@@ -1196,6 +1361,7 @@
- **状态**: 未测试
### `preview-server:preview-port-changed`
+
- **用途**: 预览服务器端口变化
- **参数**: 无
- **返回值**: 无
@@ -1203,6 +1369,7 @@
- **状态**: 未测试
### `preview-server:connects-changed`
+
- **用途**: 预览服务器连接数变化
- **参数**: 连接数
- **返回值**: 无
@@ -1210,6 +1377,7 @@
- **状态**: 未测试
### `im-plugin:update-im-html`
+
- **用途**: 更新IM插件HTML
- **参数**: HTML内容
- **返回值**: 无
@@ -1217,6 +1385,7 @@
- **状态**: 未测试
### `asset-db:state-changed`
+
- **用途**: 资源数据库状态变化
- **参数**: 状态
- **返回值**: 无
@@ -1224,6 +1393,7 @@
- **状态**: 未测试
### `asset-db:watch-state-changed`
+
- **用途**: 资源数据库监听状态变化
- **参数**: 状态
- **返回值**: 无
@@ -1231,6 +1401,7 @@
- **状态**: 未测试
### `editor:online-status-changed`
+
- **用途**: 编辑器在线状态变化
- **参数**: 状态 ('online' 或 'offline')
- **返回值**: 无
@@ -1238,6 +1409,7 @@
- **状态**: 未测试
### `scene:node-component-updated`
+
- **用途**: 节点组件更新
- **参数**: 包含节点、组件和属性信息的对象
- **返回值**: 无
@@ -1245,6 +1417,7 @@
- **状态**: 未测试
### `scene:node-component-added`
+
- **用途**: 节点组件添加
- **参数**: 包含节点和组件信息的对象
- **返回值**: 无
@@ -1252,13 +1425,14 @@
- **状态**: 未测试
### `scene:node-component-removed`
+
- **用途**: 节点组件移除
- **参数**: 包含节点和组件信息的对象
- **返回值**: 无
- **类型**: 广播事件
- **状态**: 未测试
-## Broadcast Events
+## 广播事件
以下是专门用于广播给渲染进程的事件,通常由主进程发出,渲染进程接收:
@@ -1286,7 +1460,7 @@
- `scene:node-component-removed`
- `package-template:hello`
-## Events listened by Renderer Process
+## 渲染进程监听的事件
以下是渲染进程主动监听的事件,这些事件通常由主进程发出:
diff --git a/README.md b/README.md
index 5747e0e..af26bb6 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
- **HTTP 服务接口**: 提供标准 HTTP 接口,外部工具可以通过 MCP 协议调用 Cocos Creator 编辑器功能
- **场景节点操作**: 获取、创建、修改场景中的节点
-- **资源管理**: 创建场景、预制体,打开指定资源
+- **资源管理**: 创建场景、预制体,打开场景或预制体进入编辑模式
- **组件管理**: 添加、删除、获取节点组件
- **脚本管理**: 创建、删除、读取、写入脚本文件
- **批处理执行**: 批量执行多个 MCP 工具操作,提高效率
@@ -123,10 +123,16 @@ Args: [你的项目所在盘符]:/[项目路径]/packages/mcp-bridge/mcp-proxy.j
- **参数**:
- `url`: 场景资源路径,如 `db://assets/NewScene.fire`
-### 7. create_node
+### 7. open_prefab
+
+- **描述**: 在编辑器中打开指定的预制体文件进入编辑模式。这是一个异步操作,打开后请等待几秒。
+- **参数**:
+ - `url`: 预制体资源路径,如 `db://assets/prefabs/Test.prefab`
+
+### 8. create_node
- **描述**: 在当前场景中创建一个新节点。
-- **重要提示**:
+- **重要提示**:
1. 如果指定了 `parentId`,必须先通过 `get_scene_hierarchy` 确认该 UUID 对应的父节点仍然存在。
2. **预设类型差异**:
- `empty`: 纯空节点,无组件,不带贴图。
@@ -247,15 +253,15 @@ Args: [你的项目所在盘符]:/[项目路径]/packages/mcp-bridge/mcp-proxy.j
- **描述**: 管理纹理
- **参数**:
- - `action`: 操作类型(`create`, `delete`, `get_info`, `update`)
- - `path`: 纹理路径,如 `db://assets/textures/NewTexture.png`
- - `properties`: 纹理属性(用于 `create`/`update` 操作)
- - `type`: 纹理类型(如 `sprite`, `texture`, `raw`)(用于 `update`)
- - `border`: 九宫格边距数组 `[top, bottom, left, right]` (用于 `update`,仅当 type 为 sprite 时有效)
- - `subMetas`: (内部使用)
- - `width`: 宽度 (用于 `create` 生成占位图)
- - `height`: 高度 (用于 `create` 生成占位图)
- - `native`: 原生路径
+ - `action`: 操作类型(`create`, `delete`, `get_info`, `update`)
+ - `path`: 纹理路径,如 `db://assets/textures/NewTexture.png`
+ - `properties`: 纹理属性(用于 `create`/`update` 操作)
+ - `type`: 纹理类型(如 `sprite`, `texture`, `raw`)(用于 `update`)
+ - `border`: 九宫格边距数组 `[top, bottom, left, right]` (用于 `update`,仅当 type 为 sprite 时有效)
+ - `subMetas`: (内部使用)
+ - `width`: 宽度 (用于 `create` 生成占位图)
+ - `height`: 高度 (用于 `create` 生成占位图)
+ - `native`: 原生路径
### 18. execute_menu_item
@@ -303,6 +309,7 @@ Args: [你的项目所在盘符]:/[项目路径]/packages/mcp-bridge/mcp-proxy.j
- `includeSubpackages`: 是否搜索子包 (Boolean, 默认 true)
**示例**:
+
```json
// 正则搜索
{
@@ -349,7 +356,6 @@ Args: [你的项目所在盘符]:/[项目路径]/packages/mcp-bridge/mcp-proxy.j
- **参数**:
- `path`: 文件路径,如 `db://assets/scripts/Test.ts`
-
## 技术实现
### 架构设计
@@ -413,12 +419,11 @@ Args: [你的项目所在盘符]:/[项目路径]/packages/mcp-bridge/mcp-proxy.j
1. **确定性优先**:任何对节点、组件、属性的操作,都必须建立在“主体已确认存在”的基础上。
2. **校验流程**:
- * **节点校验**:操作前必须使用 `get_scene_hierarchy` 确认节点。
- * **组件校验**:操作组件前必须使用 `get`(通过 `manage_components`)确认组件存在。
- * **属性校验**:更新属性前必须确认属性名准确无误。
+ - **节点校验**:操作前必须使用 `get_scene_hierarchy` 确认节点。
+ - **组件校验**:操作组件前必须使用 `get`(通过 `manage_components`)确认组件存在。
+ - **属性校验**:更新属性前必须确认属性名准确无误。
3. **禁止假设**:禁止盲目尝试对不存在的对象或属性进行修改。
-
## 贡献
欢迎提交 Issue 和 Pull Request 来改进这个插件!
diff --git a/UPDATE_LOG.md b/UPDATE_LOG.md
index ebac93c..09f242b 100644
--- a/UPDATE_LOG.md
+++ b/UPDATE_LOG.md
@@ -113,3 +113,10 @@
- **清理死代码**: 删除 `/list-tools` 路由中重复的 `res.writeHead / res.end` 调用。
- **文档更新**: `注意事项.md` 新增第 9 章「并发安全与防卡死机制」,记录 CommandQueue 和 IPC 超时两个防护机制。
+
+### 6. 场景与预制体工具增强
+
+- **新增 `open_prefab` 工具**: 解决了直接打开预制体进入编辑模式的问题。通过使用正确的 IPC 消息 `scene:enter-prefab-edit-mode` (并结合 `Editor.Ipc.sendToAll`),使得 AI 可以精准操控预制体的编辑流程,而不再局限于场景跳转。
+- **优化预制体创建稳定性 (`create_node` + `prefab_management`)**:
+ - 在创建物理目录后强制执行 `Editor.assetdb.refresh`,确保 AssetDB 即时同步。
+ - 将节点重命名与预制体创建指令之间的安全延迟从 100ms 增加至 300ms,消除了重命名未完成导致创建失败的竞态条件。
diff --git a/main.js b/main.js
index a227880..df25c80 100644
--- a/main.js
+++ b/main.js
@@ -253,6 +253,20 @@ const getToolsList = () => {
required: ["url"],
},
},
+ {
+ name: "open_prefab",
+ description: `${globalPrecautions} 在编辑器中打开预制体文件进入编辑模式。注意:这是一个异步操作,打开后请等待几秒。`,
+ inputSchema: {
+ type: "object",
+ properties: {
+ url: {
+ type: "string",
+ description: "预制体资源路径,如 db://assets/prefabs/Test.prefab",
+ },
+ },
+ required: ["url"],
+ },
+ },
{
name: "create_node",
description: `${globalPrecautions} 在当前场景中创建一个新节点。重要提示:1. 如果指定 parentId,必须先通过 get_scene_hierarchy 确保该父节点真实存在且未被删除。2. 类型说明:'sprite' (100x100 尺寸 + 默认贴图), 'button' (150x50 尺寸 + 深色底图 + Button组件), 'label' (120x40 尺寸 + Label组件), 'empty' (纯空节点)。`,
@@ -842,6 +856,9 @@ module.exports = {
}
},
+ /**
+ * 关闭 HTTP 服务器
+ */
stopServer() {
if (mcpServer) {
mcpServer.close();
@@ -852,6 +869,10 @@ module.exports = {
}
},
+ /**
+ * 获取 MCP 资源列表
+ * @returns {Array