Unity 批量多工程编排生成
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-rekorcwh--unity-batch-build.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-rekorcwh/unity-batch-build。– 批量无头生成一个目录下 N 个 Unity 子工程为 Windows 独立程序。自动识别真正的工程根(含嵌套一层的情况)、跳过无根/多根歧义目录、逐工程配置包管理器环境、处理中文路径编码问题、生成后双重检查产物并输出汇总报告。支持 UTF-8 映射文件模式。支付授权由云端 X402 网关完成,本地执行前强制校验 order_no。
输入:Unity 工程根目录路径 输出:批量 exe 产物 + 生成汇总报告 适用场景:一个展厅/数字孪生项目拆成十几个子程序的集成商
阅读全文 (展开查看完整说明)
概述
一个展厅项目拆 17 个子程序?12/17 个项目工程根嵌套了一层?多根歧义(旧+新副本)?
本技能自动识别真正的工程根 + 跳过歧义 + 双重检查产物 + 生成汇总报告——比一个一个手动跑快 10 倍。
价格
¥14.9 / 次(SkillHub Pay Skill,按次付费)
它解决什么问题
| 痛点 | 本技能做法 |
|---|---|
包管理器 path undefined 崩溃 | 预设 ALLUSERSPROFILE/ProgramData/SystemRoot/TEMP |
中文路径 cmd 编码问题 | ProcessStartInfo.UseShellExecute=$false 直接拉起 Unity |
| 工程根嵌套一层(12/17 项目实测) | Find-ProjectRoot:先看自身,再看一级子目录 |
| 多根歧义(旧副本+新副本同在) | 标记为 AMBIGUOUS 跳过,提示用 -MapFile 显式指定 |
| Unity 退出码不可信 / 旧产物误判成功 | 双重检查:exe+_Data+UnityPlayer.dll 且 日志含 Exiting batchmode successfully,并排除 Unity 激活相关失败标记 |
| 中文参数经终端传递编码问题 | -MapFile UTF-8 映射文件模式,路径全从文件读,不经过命令行参数 |
适用场景
- 一个项目目录下有 N 个独立 Unity 子工程(17 个实测),要一次性全生成
.exe - 子工程里混有"陈旧内嵌副本"或直接把工程包在子文件夹里(如
历史遗存(新)/1.0/PC端),需要定位真正的活动根 - 生成完要自动确认每个产物齐全(而不是逐个手动点开看)
- 客户要求生成汇总报告给甲方(
build_report.txt)
云端服务调用(SkillHub X402)
本技能为本地执行型:云端网关完成支付授权后,返回 LOCAL_EXECUTION 交付单(含订单号与调用参数)。
# 1) 发起调用
POST https://czqlooi-d8ghvqslf8ca855ee-1470936211.ap-shanghai.app.tcloudbase.com/pay-gateway/unity-batch-build
body: {"output_root": "<产物输出根>", "unity": "<Unity.exe 路径>", "source_root": "<工程源根> 或 map_file": "<映射文件>"}
# 2) 收到 HTTP 402 → 调用 weixinpay_pay 完成微信支付(¥14.9/次)
# 3) 携带 X-Out-Trade-No 重试 → HTTP 200,返回 delivery=LOCAL_EXECUTION(含 order_no 与调用参数)
# 在具备 Windows + 目标 Unity 版本的机器上,运行 scripts/run.py 并传入 order_no 完成批量构建- 批量构建依赖买家本地 Unity 环境,产物仅供该订单用户使用,禁止转售。
- 授权校验(堵白嫖):本地
scripts/run.py执行前会向网关/verify校验order_no(支付完成后交付单中的订单号)。未支付 / 授权码无效 / 网关不可达时直接拒绝执行——必须先付费拿到授权码,才能本地跑。 - 下方「两种模式」为本地执行步骤(参数说明)。
两种模式
模式 A:自动探测(推荐先跑,看清结构)
powershell -File scripts/build_all.ps1 `
-SourceRoot "G:项目源代码" `
-OutputRoot "G:项目程序" `
-Unity "D:Unity2020.2.6f1Unity.exe" `
-Skip "A01-DemoZone"- 逐个一级子目录:自身含
Assets+ProjectSettings→ 直接用;否则查一级子目录 - 0 个候选 →
IGNORE(可能不是 Unity 工程);>1 个候选 →AMBIGUOUS(旧副本干扰,删掉或用 MapFile);恰好 1 个 → 生成 - 产物产出到
OutputRoot<工程名>,含<工程名>.exe+<工程名>_Data+UnityPlayer.dll+build_<名>.log - 末尾生成
OutputRootbuild_report.txt汇总
模式 B:映射文件(编码安全 + 处理嵌套/歧义,生产首选)
建一个 UTF-8 的 build_map.txt,每行 产出名=工程根路径:
# 产出名=实际 Unity 工程路径
B01-侨都文脉-历史遗存=G:项目源代码B01-侨都文脉-历史遗存历史遗存(新)
C06-名人遗存=G:项目源代码C06-名人遗存powershell -File scripts/build_all.ps1 `
-MapFile "G:项目build_map.txt" `
-OutputRoot "G:项目程序" `
-Unity "D:Unity2020.2.6f1Unity.exe"- 中文路径从 UTF-8 文件读取,彻底规避终端 GBK/UTF-8 编码坑
- 多根歧义、嵌套目录全部由你显式指定,零歧义
你会得到什么
- 每个工程的
<Name>.exe+<Name>_Data完整 Windows 独立程序 build_<Name>.log:每个工程的独立日志build_report.txt:汇总报告(OK/FAIL/IGNORE/AMBIGUOUS/STARTFAIL 分桶统计)- 失败工程的明确原因(不再"exit 0 但没 exe"误判)
套装搭配
- unity-headless-pack:单工程排错 / 生成离线
rebuild.bat时深入用。 - unity-dependency-config:批量处理第三方依赖组件后再批量生成。
- unity-proto-parse:批量生成后用本技能还原每个程序的控制指令,让集中调度能接管。
风险逆转
- "怕打错工程根":模式 A 自动识别,模式 B 用映射文件显式指定——两种方式都零歧义。
- "旧产物还在,被误判成功":双重检查机制——
exe+_Data+UnityPlayer.dll且 日志含Exiting batchmode successfully,避免旧.exe误判。 - "生成到一半挂掉":每个工程独立 try-catch,单工程失败不影响后续工程。
- "客户要汇总报告":
build_report.txt已生成,OK/FAIL/IGNORE/AMBIGUOUS 分桶清晰。
付费使用说明(X402 协议)
本技能为 SkillHub Pay Skill,按调用量计费。服务在收到调用请求且未匹配到有效支付凭证时,返回 HTTP 402(Payment Required)并携带 X402 支付触发标识;Agent 完成支付后携带原订单号再次请求,即可获得技能执行结果。
前置检查
- 调用方已检查 weixinpay 插件是否安装并启用(微信支付 AI 专属卡能力依赖此插件;未安装时无法弹出支付授权)。
- 调用方已完成 SkillHub 账号认证与支付绑定。
- 已安装目标 Unity 版本,PowerShell 5.1 +
Unity.exe -batchmode可用。 -SourceRoot目录下包含待处理子工程,或已提供 UTF-8 映射文件-MapFile。- 输出根目录可写,磁盘剩余空间 ≥ 预计产物大小 2 倍。
支付触发
- 首次调用时,服务返回 HTTP 402,并附带:
- 响应头
WeixinPay-Required: <payment_code>(值为微信支付 payUrl) - 响应头
X-Out-Trade-No: <订单号> - 响应体字段
payment_code(与payUrl同值)
- 响应头
- Agent 识别
WeixinPay-Required头后,调用weixinpay_pay插件并传入payment_code。 - 支付完成后,在原请求上增加请求头
X-Out-Trade-No: <订单号>再次调用,服务校验支付凭证后返回 LOCAL_EXECUTION 交付单(含order_no)。 - 本地执行授权:本地
run.py的--params-file中必须包含order_no(即交付单中的订单号),脚本会自动调用网关/verify校验;校验通过才执行批量构建。
重试机制
- 网络类瞬时失败(连接超时、DNS 失败、支付网关 5xx)自动重试最多 3 次,退避 1s/2s/4s。
- 同一
X-Out-Trade-No可多次重试查询支付状态,不重复创建订单、不重复扣费。 - 逻辑类失败(参数非法、工程不存在、Unity 路径错误)直接返回错误,不重试。
异常处理
- 未支付或支付未完成:服务继续返回 402。
- 网络类失败:按退避策略自动重试(最多 3 次,1s/2s/4s)。
- 参数非法 / 前置检查不通过 / 配置不完整 / 技能执行失败:返回对应 4xx/5xx,不扣费。
排错
- 大量 IGNORE:说明这些目录连一层嵌套都没有
ProjectSettings,可能不是 Unity 工程或结构更深;用-MapFile直接指路径。 - AMBIGUOUS:该目录有多个候选根(旧副本+新副本),删掉陈旧副本,或在 MapFile 里精确指定要生成的那个。
- FAIL 但 exit 0 / 旧产物仍在:本技能已用"日志成功标记"判定,不会再被旧
.exe误导;FAIL 时看对应build_<名>.log(常见:Unity 激活失效需重激活、Build Failed看具体失败)。 - Unity 根本没启动(STARTFAIL):检查
-Unity路径是否正确、是否有权限。