十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用 MCP for Unity 的 batch_execute 批量创建对象与分配材质

如何用 MCP for Unity 的 batch_execute 批量创建对象与分配材质 如何用 MCP for Unity 的 batch_execute 批量创建对象与分配材质【免费下载链接】unity-mcpUnity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.项目地址: https://gitcode.com/GitHub_Trending/un/unity-mcp如果你的任务是在 Unity 场景中一次创建多个 GameObject并为它们生成、分配带颜色的材质逐个调用工具意味着每个对象都要支付一次与 Unity 的往返通信batch_execute把这些调用合并成一次。读完本文你可以在已连接的 MCP for Unity 环境中用一次批量调用完成“创建 3 个立方体 → 创建 3 个材质 → 把材质赋给渲染器”的完整链路并从返回结果中确认每一步是否成功。适用前提Unity 2021.3 LTS 或更新版本Python 3.10含uv以及一个已配置的 MCP 客户端具体见 安装文档。准备条件安装 MCP for Unity 并确认服务器已连接在 Unity 中打开Window → Package Manager点击选择Add package from git URL...粘贴 安装文档 中给出的 Git URL。该文档同时提供了 Unity Asset Store 与 OpenUPM 两条替代安装路径。导入后会自动打开setup wizard确认 Python 与uv已安装缺失时向导会引导安装点击Done依赖项显示为绿色后选择要配置的 MCP 客户端并点击Configure Selected。通过Window → MCP for Unity可随时启动/停止服务器、切换传输方式HTTP 与 stdio。状态面板显示Connected时说明客户端与 Unity Editor 已打通可以开始执行批量命令。如果使用 CLI 方式执行批量命令还需要先安装服务端cd Server后执行pip install -e .或uv pip install -e .见 CLI 指南。batch_execute 的参数与硬性限制batch_execute的参数定义见 工具文档参数说明commands必填命令数组每项包含tool工具名和params参数对象两个键parallel是否允许只读命令并行执行fail_fast第一步失败后是否停止后续命令max_parallelism并行工作数上限提示使用批量命令前必须了解这几条约束依据 工具文档 与 Python 侧实现顺序不能依赖上一步的返回值。批次内可以任意混合工具但只有当第 N 步不需要第 N-1 步的返回结果时才安全如果需要把它拆成两个批次。单批命令数有上限在 Unity 的 MCP Tools 窗口中可配置默认 25硬上限 100。超限时 Python 侧会直接报错batch_execute supports up to {N} commands (configured in Unity); received {M}需要拆成多个批次执行。批次内不支持单条命令指定unity_instance路由实例要设在batch_execute外层调用上整个批次路由到同一实例。fail_fast的行为传true时在第一个失败步骤后中止剩余命令传false时执行所有操作并收集每步结果适合“尽力而为”的清理类任务。注意工具文档将默认值写作true而 Unity 侧实现 BatchExecute.cs 在参数缺省时按false处理CLI 的--fail-fast标志也是默认关闭——建议总是显式传入该参数不要依赖隐式默认值。parallel: true的实际情况文档描述为让只读命令并发执行、写操作仍然串行但当前 Unity 侧实现把所有命令都在主线程顺序执行以保证确定性请求parallel时会在日志中告警并在响应中记录parallelApplied: false。写批次时不要依赖并行来提速。主路径一次批量调用创建 3 个立方体并分配材质下面的示例直接取自 batch_execute 工具文档在 MCP 客户端中向 Unity 发起一次batch_execute调用payload 如下{ commands: [ { tool: manage_gameobject, params: { action: create, name: RedCube, primitive_type: Cube, position: [-1, 0, 0] }}, { tool: manage_gameobject, params: { action: create, name: BlueCube, primitive_type: Cube, position: [0, 0, 0] }}, { tool: manage_gameobject, params: { action: create, name: YellowCube, primitive_type: Cube, position: [1, 0, 0] }}, { tool: manage_material, params: { action: create, material_path: Materials/Red.mat, shader: Standard, properties: { _Color: [1, 0, 0, 1] } }}, { tool: manage_material, params: { action: create, material_path: Materials/Blue.mat, shader: Standard, properties: { _Color: [0, 0, 1, 1] } }}, { tool: manage_material, params: { action: create, material_path: Materials/Yellow.mat, shader: Standard, properties: { _Color: [1, 1, 0, 1] } }}, { tool: manage_material, params: { action: assign_material_to_renderer, target: RedCube, search_method: by_name, material_path: Materials/Red.mat }}, { tool: manage_material, params: { action: assign_material_to_renderer, target: BlueCube, search_method: by_name, material_path: Materials/Blue.mat }}, { tool: manage_material, params: { action: assign_material_to_renderer, target: YellowCube, search_method: by_name, material_path: Materials/Yellow.mat }} ] }这条链路包含三类命令各自的参数要点依据 manage_gameobject 与 manage_material 的参数表manage_gameobject的createname指定初始名称primitive_type指定基元类型这里是Cubeposition接受[x, y, z]数组。它不负责搜索和组件管理——搜索用find_gameobjects组件增删用manage_components。manage_material的creatematerial_path是相对 Assets 的路径如Materials/Red.matshader默认Standardproperties以{name: value}形式给出初始属性。如果你的项目使用 URP文档给出的对应写法是shader: Universal Render Pipeline/Lit且颜色属性名换成_BaseColor。manage_material的assign_material_to_renderertarget是 GameObject 名称/路径search_method: by_name按名称匹配material_path指向要分配的材质。mode: shared复用材质资产mode: instance会为每个渲染器克隆一份文档提醒会破坏 draw call 合批谨慎使用本例按文档示例省略mode。之所以可以放进同一批次后 6 条命令只依赖前 6 条创建出的名字与路径而不依赖它们的返回数据满足“顺序不依赖返回值”的条件。可选路径从 CLI 执行同一批次如果你更习惯命令行CLI 指南 提供了三个批量子命令# 生成一份命令文件模板 unity-mcp batch template my_commands.json模板会写入manage_scene、manage_gameobject、manage_components等示例命令把它改成你要执行的创建与材质命令即可。注意 CLI 的文件格式是顶层 JSON 数组每个元素仍是{tool: ..., params: ...}结构与batch_execute的commands参数内容一致只是外面不再包一层commands键[ {tool: manage_gameobject, params: {action: create, name: BatchCube, primitiveType: Cube, position: [0, 1, 0]}} ]# 从文件执行可选并行与快速失败 unity-mcp batch run my_commands.json --fail-fast # 或直接内联执行 unity-mcp batch inline [{tool: manage_gameobject, params: {action: create, name: Cube1, primitiveType: Cube}}]使用 CLI 路径要留意两层不同的上限CLI 实现 在本地硬限制单批 40 条命令超限直接报Maximum 40 commands per batch而请求发往后服务器端仍按 Unity 配置的批量上限默认 25校验。也就是说实际上限取两者中较小者超过时把文件拆成多个。这些命令直接写入 Unity 场景与项目资产执行前请确认当前活动场景是你想修改的场景。结果验证如何确认批次全部生效看批量响应本身。Unity 侧的响应数据依据 BatchExecute.cs包含results每条命令一项含tool、callSucceeded成功时为result失败时为errorcallSuccessCount/callFailureCount成功与失败条数全部成功时整体消息为Batch execution completed.任一条失败为One or more commands failed.但data中仍然附带每步明细。CLI 路径下执行完成后会打印All N commands completed successfully或部分成功时的N succeeded, M failed。到编辑器里核对实际结果。场景 Hierarchy 中应出现RedCube、BlueCube、YellowCube三个对象Project 窗口的Materials/下出现对应的.mat文件且对象渲染为对应颜色。也可以不依赖肉眼用只读命令复核# 确认对象已存在 unity-mcp gameobject find RedCube # 查看场景层级 unity-mcp scene hierarchy # 确认材质资产已生成 unity-mcp asset search --pattern *.mat --path Assets/MaterialsMCP 客户端中对应的只读工具是find_gameobjects按名称/tag/layer/组件/路径搜索返回实例 ID与mcpforunity://scene/gameobject/{id}资源用法见 find_gameobjects 文档。失败处理与已知边界超过单批上限Python 侧报batch_execute supports up to {N} commands (configured in Unity)Unity 侧报A maximum of {N} commands are allowed per batch (configurable in MCP Tools window, hard max 100)。按文档建议拆成多个批次往返成本仍然被摊薄。批次中混入了被禁用的工具该条命令会被记为失败result为Tool {toolName} is disabled in the Unity Editor.不会抛出异常中断整个批次除非fail_fast生效。服务器或桥接未连接打开Window → MCP for Unity检查状态面板必要时重启 Unity确认uv --version在终端可用客户端侧确认 HTTP 服务运行在localhost:8080且配置 URL 一致见 安装文档的 Troubleshooting。多实例项目unity_instance只能设在batch_execute外层不能逐条指定完整路由模型见 Multi-Instance Routing 对应页面该链接来自 manage_gameobject 文档。当批次规模超出当前配置上限、或者下一步需要消费本批次的返回数据例如先查询再修改时把操作拆成多个连续批次即可——每个批次内部依然享受单次往返的开销。各工具动作的完整参数表以 工具参考 中对应页面为准。【免费下载链接】unity-mcpUnity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.项目地址: https://gitcode.com/GitHub_Trending/un/unity-mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表