Unity 6 构建流水线
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-build-pipeline-luq8。
技能介绍
要解决的问题
Unity 6 项目的构建问题往往不发生在“点击 Build”那一刻,而是出现在设置与自动化链路里:场景明明在编辑器能加载,却没进包;切换平台后脚本后端或工具链没准备好,导致 IL2CPP 失败;为了控包体开了托管裁剪,结果反射路径在运行时丢方法;CI 里只判断函数“有返回”,没看 BuildReport,于是错误被当成成功;Addressables 内容没有单独构建,资源是旧的或缺失;不小心把 BuildOptions.Development 发到了线上。
核心能力与关键步骤
这个技能聚焦 Unity 侧的构建 API 与设置,目标版本是 Unity 6 (6000.0 LTS)。典型流程是:
- 场景列表:在 Build Settings/Profiles 或
EditorBuildSettings.scenes中维护要发布的场景,只有列入且启用的会出包;scene 0是启动场景。 - 平台目标:用
BuildTarget/EditorUserBuildSettings选择并切换目标平台。 - 脚本后端:在 Player Settings 里选
Mono(迭代快,偏桌面)或IL2CPP(AOT C++, 适配更多平台、性能更好、逆向难度更高),并确保机器上安装了对应平台的 C++ 工具链。 - 包体与性能:设置 Managed Stripping Level(Disabled → Minimal → Low → Medium → High),用
link.xml保护仅反射使用的代码,并为不同平台配置 Quality Settings。 - 脚本化构建:调用
BuildPipeline.BuildPlayer(BuildPlayerOptions),然后检查返回的BuildReport;summary.result非Succeeded必须让流水线失败。 - 无头/CI:以
-batchmode -quit -executeMethod运行,并检查退出码。 - 验证:实际启动产出的玩家包确认能跑,而不只确认构建未抛异常。
适用边界与注意点
端到端的 CI 服务配置属于 DevOps 范畴,这里不包办;主机/平台认证细节属于平台 NDA 范围;商店分发请配合 steam-publish / itch-publish。常见的坑包括:场景未列入或被禁用导致运行时 SceneManager.LoadScene 找不到;IL2CPP 在新机器上缺工具链而失败;裁剪引发 MissingMethodException / TypeLoadException,需要降档或补 link.xml;把“调用返回”当成功而忽略报告;Addressables 需要单独执行内容构建并指向正确加载路径;发布版避免使用 BuildOptions.Development。如需完整多平台脚本样例与 Addressables 构建调用,可参考 references/ci-build-script.md。
使用场景
- 项目升级到 Unity 6 后,整理 Build Settings 场景列表并设置启动场景。
- 切换 Windows 与 Android 目标时,选择 Mono 或 IL2CPP 并确认工具链。
- 在 CI 中调用 BuildPipeline.BuildPlayer,按 BuildReport 判定成功或失败。
- 开启托管裁剪后遇到反射异常,调整档位并用 link.xml 保留相关类型。
适合人员
- Unity 客户端工程师:需要稳定复现并自动化玩家构建。
- CI/DevOps 工程师:要为 Unity 项目接入无头批量构建与退出码检查。
- 技术美术或构建负责人:负责控制包体、裁剪策略与平台质量设置。
- QA 自动化工程师:想验证构建产物可启动并检查报告结果。