
项目:Unity 2022.3 模拟经营游戏
环境:macOS / Unity 2022.3.51f1c1 / Unity Pipeline(com.unity.pipeline 兼容分支)
一、背景:为什么需要这套工具链
在做 ChaRestaurant 这个 Unity 2D 模拟经营游戏时,我们引入了 Unity Pipeline(Unity 官方的 com.unity.pipeline 包)——它能在 Unity Editor 内部跑一个 HTTP 服务器,让外部程序(CLI、CI、AI Agent)远程驱动编辑器:触发编译、跑测试、改场景、查日志、控制 Play Mode。
理想的工作流是:
AI Agent / CI 脚本
│ HTTP 请求
▼
Unity Editor (内置 Pipeline HTTP 服务器, 端口 7800)
├── 触发 recompile → 返回编译结果
├── 运行单元测试 → 返回测试报告
├── 读写场景/资源/组件
└── 控制 Play Mode / 截图 / 查日志
这套工具链能让 AI Agent(如 Claude / Codex / 自研 Agent)直接驱动 Unity 编辑器,实现"改代码 → 自动编译 → 跑测试 → 拿结果"的闭环自动化。
但问题是:这套工具链一开始根本没有配置成功。
二、问题诊断:为什么"没配置成功"
拿到任务后,我按顺序排查了 6 个环节,发现了整整 6 个问题:
问题 1:unity CLI 根本没安装
检查 which unity → command not found。官方文档说通过 Unity CDN 安装:
curl -fsSL https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.sh | UNITY_CLI_CHANNEL=beta bash
安装后得到 unity CLI v0.1.0-beta.3。
问题 2:com.pipeline.unity2022 包严重不完整
仓库里 Packages/com.pipeline.unity2022/ 只有 3 个文件(完整包应有 582 个):
com.pipeline.unity2022/
├── Runtime/Common/BasePipelineServer.cs ← 唯一的核心文件
├── Runtime/Unity.Pipeline.asmdef
└── Tests/Editor/ServerLifecycle/PipelineServerTests.cs
BasePipelineServer.cs 里引用了 Unity.Pipeline.Models、Unity.Pipeline.Commands、Unity.Pipeline.Security、Unity.Pipeline.Threading 等命名空间——全部不存在,代码根本编译不过。
问题 3:manifest.json 从未引用 pipeline 包
Packages/manifest.json 里根本没有 com.pipeline.unity2022 / com.unity.pipeline 的依赖项,Unity 压根不会加载它们。
问题 4:fork 依赖的 Roslyn 在项目里不存在
fork 的 asmdef 声明了 precompiledReferences 指向 Microsoft.CodeAnalysis*.dll 等 Roslyn DLL,但项目 Assets 里一个都没有。
问题 5:asmdef 引用了未安装的 InputSystem
fork 的 asmdef 引用 Unity.InputSystem,但项目 manifest 里没有这个包。
问题 6:官方源码有 Unity 6 专属 API
从官方 0.3.1-exp.1 拉下来的源码里,用到了 PhysicsMaterial(Unity 6 才有的类型,2022.3 叫 PhysicMaterial)和 Material.rawRenderQueue(Unity 6 属性,2022.3 只有 renderQueue)。
三、修复过程:六步走
第一步:找到完整源码
仓库里的 fork 是基于 Unity 官方内部包 com.unity.pipeline(版本 0.3.1-exp.1)做的 2022.3 兼容适配。我从 Unity 官方包注册表下载了原始 tarball:
https://download.packages.unity.com/com.unity.pipeline/-/com.unity.pipeline-0.3.1-exp.1.tgz
对比后发现:fork 的 BasePipelineServer.cs 和官方源码几乎一致(只差 watchdog 心跳的几行改动),确认 fork 就是官方源码的轻量适配。
第二步:补全包结构
把官方源码的 Runtime/、Editor/、CodeGen/ 全部复制进 com.pipeline.unity2022/(共 309 个文件),并:


302

被折叠的 条评论
为什么被折叠?



