Unity 命令行批量生成
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-rekorcwh--unity-headless-pack.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-rekorcwh/unity-headless-pack。– Unity 命令行批量生成工具——中文路径兼容、包管理器环境配置、多工程编排、产物完整性检查。把 Unity 工程用命令行生成 Windows 独立程序(.exe + _Data),解决包管理器路径参数、中文路径编码、批量生成编排等国内团队反复遇到的问题。支付授权由云端 X402 网关完成,本地执行前强制校验 order_no。
输入:Unity 工程路径与生成参数 输出:exe 交付产物 + 生成日志 适用场景:展览馆、数字孪生、教育课件、互动屏一体机交付
阅读全文 (展开查看完整说明)
概述
包管理器
path undefined崩溃?中文路径乱码?一个展厅项目拆 17 个子程序要批量打包?国内团队踩过的三个坑,本技能一次性打包根治——把论坛上年年有人问的问题做成开箱即用的脚本。
价格
¥9.9 / 次(SkillHub Pay Skill,按次付费)
它解决什么问题
| 现象 | 根因 | 本技能解法 |
|---|---|---|
UnityPackageManager path undefined | UnityPackageManager.exe(pkg 生成的 Node)读 process.env.ALLUSERSPROFILE/ProgramData/SystemRoot/TEMP,缺失则 path.join(undefined) 崩溃 | 启动前预设这四个环境变量(缺才补,不覆盖已有) |
| 中文工程/产出路径编码问题 | cmd /c 或 Start-Process -ArgumentList 用系统编码传参,UTF-8 中文被干扰 | 用 System.Diagnostics.ProcessStartInfo(UseShellExecute=$false)直接拉起,参数走变量不写进脚本;脚本体保持纯 ASCII → 无需 BOM |
| 多工程批量编排 + 产物检查 | 子工程多、产物分散、人工检查易遗漏 | 编排脚本循环调用 + 产物清单自动断言 |
适用场景
- 单一 Unity 工程命令行生成 Windows 独立程序
- 中文工程路径 / 中文产出目录的批量生成
- 客户现场无 Unity 编辑器时,用
rebuild.bat一键重建 - 展览馆/数字孪生/教育课件/互动屏一体机交付(17 个子工程实测)
云端服务调用(SkillHub X402)
本技能为本地执行型:云端网关完成支付授权后,返回 LOCAL_EXECUTION 交付单(含订单号与调用参数)。
# 1) 发起调用
POST https://czqlooi-d8ghvqslf8ca855ee-1470936211.ap-shanghai.app.tcloudbase.com/pay-gateway/unity-headless-pack
body: {"unity": "<Unity.exe 路径>", "project": "<工程根>", "out_exe": "<输出 exe 路径>"}
# 2) 收到 HTTP 402 → 调用 weixinpay_pay 完成微信支付(¥9.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(支付完成后交付单中的订单号)。未支付 / 授权码无效 / 网关不可达时直接拒绝执行——必须先付费拿到授权码,才能本地跑。 - 下方「3 步出程序」为本地执行步骤(参数说明)。
3 步出程序
# 1) 准备 Unity 路径(如 D:Unity2020.2.6f1Unity.exe,按你的安装位置调整)
# 2) 单工程无头生成
powershell -File scripts/launch_build.ps1 `
-Unity "D:Unity2020.2.6f1Unity.exe" `
-Project "D:ProjectsExpoDemoSourceB01" `
-OutExe "D:ProjectsExpoDemoBuildB01B01.exe" `
-LogFile "D:ProjectsExpoDemoBuildB01build_B01.log"
# 3) 退出码 = 0 即成功;脚本会写 rebuild.bat 到产出目录,用户双击可重建你会得到什么
<Name>.exe+<Name>_Data+MonoBleedingEdge+UnityPlayer.dll完整产物rebuild.bat:GBK/ANSI 编码的离线重建脚本(客户现场无 Unity 编辑器也能重建)build_<Name>.log:完整生成日志(含 Unity 退出码分析)- 退出码透传:脚本退出码 = Unity 退出码(0 = 成功),便于 CI/CD 集成
脚本清单
| 脚本 | 作用 |
|---|---|
scripts/launch_build.ps1 | 单工程无头生成(纯 ASCII 脚本体,规避 BOM 问题) |
scripts/gen_rebuild_bat.ps1 | 生成 GBK 编码的 rebuild.bat(中文路径走 -Encoding Default 写入) |
scripts/verify_build.ps1 | 产物清单断言:<Name>.exe + <Name>_Data + UnityPlayer.dll + UnityCrashHandler32.exe |
套装搭配
- unity-batch-build:批量处理 N 个子工程(17 个实测),本技能负责单工程深度排错。
- unity-dependency-config:处理第三方依赖组件后再用本技能重新生成。
- unity-proto-parse:生成产物后用本技能还原控制指令,让集中调度能接管。
风险逆转
- "我不用 PowerShell":脚本只调
Unity.exe,用户无需写 PS;命令行参数完全 ASCII,中文路径走参数变量。 - "生成失败没日志":每个工程写独立
build_<Name>.log,失败原因可逐工程定位。 - "客户现场没 Unity":
rebuild.bat内置 env 配置 + Unity 路径引用,双击重建。 - "双根目录歧义":脚本会明确报错,提示用
unity-batch-build的 MapFile 模式指定工程根。
付费使用说明(X402 协议)
本技能为 SkillHub Pay Skill,按调用量计费。服务在收到调用请求且未匹配到有效支付凭证时,返回 HTTP 402(Payment Required)并携带 X402 支付触发标识;Agent 完成支付后携带原订单号再次请求,即可获得技能执行结果。
前置检查
- 调用方已检查 weixinpay 插件是否安装并启用(微信支付 AI 专属卡能力依赖此插件;未安装时无法弹出支付授权)。
- 调用方已完成 SkillHub 账号认证与支付绑定。
- 已安装目标 Unity 版本(中国版常见:
D:Unity2020.2.6f1Unity.exe,无Editor子目录)。 - Windows + PowerShell 5.1 环境可用。
- 目标工程含
Assets/+ProjectSettings/,路径无冲突。 - 输出目录可写,磁盘剩余空间 ≥ 预计产物大小 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,不扣费。
排错速查
- 仍报 path undefined:确认四个 env 变量在
UnityPackageManager启动前已设(脚本已处理;若手动命令行跑,先set再跑)。 - 日志里中文路径变
?:检查是否走了cmd -ArgumentList;改用ProcessStartInfo。 - 生成卡住/无日志:多半当前运行环境拦截了 AppData 缓存或中文产出目录的写入,建议在本地或非受限环境中执行。
- exit 0 但没 exe:看
build_XX.log末尾是否Exiting batchmode successfully;定位是否打错了双根目录里的陈旧副本。