Unity 6 构建流水线
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-build-pipeline-sh-k4ji2a。
技能介绍
要解决什么问题
Unity 6 项目从编辑器里能跑,到 CI 里稳定产出各平台 Player,中间往往卡在:场景没进 Build 列表、切平台与脚本后端、IL2CPP 缺工具链、裁剪后反射代码在包里才炸,以及把 BuildPipeline.BuildPlayer 的返回值当成成功。本技能聚焦 Unity 侧 Build Settings / Profiles、脚本化构建与无头执行,不替代完整 DevOps 编排或商店提交流程。
技能如何帮你落地
核心流程可以按下面顺序核对:
- 场景清单:在 Build Profiles/Settings 或
EditorBuildSettings.scenes里列出并启用要打的场景;索引 0 为启动场景,未列入的 scene 不会进包,SceneManager.LoadScene也看不到它们。 - 平台与后端:用
BuildTarget/EditorUserBuildSettings切换目标平台;在 Player Settings 选 Mono(迭代快、桌面常见)或 IL2CPP(AOT、多平台硬性要求、需本机 C++ 工具链)。 - 体积与性能:调整 Managed Stripping Level,对仅靠反射的代码用
link.xml做 preserve;按平台调 Quality Settings。 - 脚本化构建:
BuildPipeline.BuildPlayer(BuildPlayerOptions)后必须看 BuildReport,summary.result非 Succeeded 应让流水线失败。 - CI 无头:
-batchmode -quit -executeMethod跑 Editor 方法,并以进程退出码为准;构建通过后仍应实际启动 Player 验证,而不只是没抛异常。
常见模式包括:带结果检查的脚本构建、无头/CI 调用、以及用 link.xml 防护被裁掉的类型。若项目里已有 ProjectSettings/EditorBuildSettings.asset 或 CI 构建脚本,可直接对照上述步骤改。
适用边界与坑
- Addressables:玩家构建不会自动重建 Addressables 内容,需单独执行 Addressables 构建并配置正确的加载路径。
- Development 构建:
BuildOptions.Development会打开调试/Profiler,发布应使用BuildOptions.None。 - 不负责:端到端 CI 服务配置、各平台认证 NDA 细节;分发见 steam-publish / itch-publish;编辑器脚本惯例可参考 unity-csharp-scripting。多平台 CI 示例与 Addressables 内容构建可参考技能内的
references/ci-build-script.md。
使用场景
- 在 Unity 6 项目里首次配置 Build Profiles,把正式关卡场景列入列表并指定索引 0 为启动场景。
- 移动端要切 IL2CPP 打 Android/iOS 包,需在 Player Settings 选后端并处理本机 NDK/构建工具缺失导致的失败。
- 为 GitLab/Jenkins 写无头构建:`-batchmode -quit -executeMethod` 调用自定义 `BuildPlayer`,并按 BuildReport 与退出码失败流水线。
- 发布包只在真机出现 `MissingMethodException`,需下调 Managed Stripping 或为反射类型补充 `link.xml` preserve。
适合人员
- 负责 Unity 客户端多平台出包的工程师,需要把编辑器里的手动 Build 改成可重复脚本。
- 维护公司 Unity 流水线的构建/DevOps 工程师,要把 Editor 构建挂到 CI 并统一失败判定。
- 刚接手 LTS 项目的技术负责人,要排查「编辑器能进场景、包里场景丢失」类构建配置问题。
- 使用 Addressables 的 gameplay 程序员,需要在 Player 构建前单独跑内容构建并核对加载路径配置。