Skip to content

构建发布系统

unity-build-publishing-system-deep-dive

一句话理解

Unity 的构建发布系统就是:

c
Unity 项目 -> Build Profile -> Player Settings -> Build Pipeline -> 平台安装包/可执行文件 -> 测试 -> 发布

Unity 官方把构建出来的可运行程序叫 Player。这里的 Player 不是“玩家角色”,而是“目标平台上的运行程序”。

1. Build 和 Publish 的区别

Build 是生成包:

Windows .exe
Android .apk / .aab
iOS Xcode 工程
WebGL 网页文件
macOS .app

Publish 是发布到渠道:

c
Steam
itch.io
Google Play
App Store
网页服务器
公司内测平台

所以:

c
Build = 做出产品包
Publish = 把产品包交给玩家

2. Build Profiles

Unity 6 里主要用:

c
File > Build Profiles

旧教程里常说:

c
File > Build Settings

Unity 6 文档说明,Build Profiles 是新的构建配置窗口,可以给不同平台、不同用途保存多套配置。

常见做法:

c
Windows_Dev
Windows_Release
Android_Test
Android_GooglePlay
WebGL_Demo

每个 Profile 重点管:

c
目标平台
场景列表
Development Build 是否开启
平台特定构建选项
输出路径

场景列表非常重要。第一个场景通常是启动场景:

c
0 MainMenu
1 Level01
2 Level02
3 GameOver

3. Player Settings

路径:

c
Edit > Project Settings > Player

它决定“这个产品是谁、怎么运行”。

重点设置:

c
Company Name
Product Name
Version
Bundle Identifier / Package Name
Icon
Splash Image
屏幕方向
分辨率
权限
Scripting Backend
Managed Stripping Level
目标架构
平台签名

比如 Android 包名:

c
com.yourcompany.yourgame

这个东西一旦上架后不要随便改。商店会用它识别你的应用身份。

4. Development Build 和 Release Build

Development Build 适合测试:

c
带调试符号
可以连接 Profiler
可以脚本调试
更容易定位问题
包可能更大、更慢

Release Build 适合正式发布:

c
关闭调试
更接近真实性能
体积和性能更适合上线

正式发包前通常要确认:

c
Development Build 关闭
Script Debugging 关闭
Deep Profiling 关闭
日志输出收敛
版本号正确

5. 构建时 Unity 做了什么

Unity 构建时大致做这些事:

c
收集 Build Profile 里的场景
收集场景引用到的资源
处理 Resources / StreamingAssets / Addressables 等内容
编译 C# 脚本
根据平台使用 Mono 或 IL2CPP
压缩资源
裁剪未使用代码
生成平台工程或可运行程序
对移动端进行签名

官方文档也提到 Unity 使用增量构建管线,只重建变化的部分;干净构建可以通过 Clean Build 相关选项触发。

6. Mono 和 IL2CPP

简单理解:

c
Mono:构建快,适合开发迭代
IL2CPP:更接近正式发布,性能和启动表现通常更好,但构建更慢、包可能更大

很多移动端正式包会用 IL2CPP。Unity 官方文档也说明,IL2CPP 支持所有平台,并能带来性能/启动时间收益,但会增加构建时间和最终包体积。

7. 平台差异

Windows/macOS/Linux:

c
输出可执行文件和数据目录
适合先练习构建流程
发布到 Steam/itch.io/官网下载

Android:

c
测试常用 APK
Google Play 通常用 AAB
需要 Package Name
正式发布需要 Keystore 签名
要配置版本号、权限、目标架构

iOS:

c
Unity 先生成 Xcode 工程
再用 Xcode 构建、签名、上传
需要 Apple Developer 账号、证书、Provisioning Profile

WebGL:

c
输出 HTML / JS / Wasm / Data
需要部署到 Web 服务器
注意浏览器兼容、加载体积、压缩设置

8. 自动化构建

项目大了以后,可以用 BuildPipeline.BuildPlayer 做自动构建:

c
using UnityEditor;

public static class BuildScript
{
    [MenuItem("Build/Windows Release")]
    public static void BuildWindows()
    {
        BuildPlayerOptions options = new BuildPlayerOptions
        {
            scenes = new[]
            {
                "Assets/Scenes/MainMenu.unity",
                "Assets/Scenes/Level01.unity"
            },
            locationPathName = "Builds/Windows/MyGame.exe",
            target = BuildTarget.StandaloneWindows64,
            options = BuildOptions.None
        };

        BuildPipeline.BuildPlayer(options);
    }
}

这个脚本必须放在 Editor 文件夹里,因为 UnityEditor 代码不能进正式游戏包。

9. 常见坑

c
忘记把场景加入 Build Profile,切场景时报错
首场景不是 MainMenu,启动进错场景
Resources 乱放资源,包体暴涨
移动端没有签名,无法正式发布
Android Package Name 后期乱改
iOS 以为 Unity 直接出 ipa,其实通常先出 Xcode 工程
Development Build 没关就发正式包
IL2CPP 裁剪导致反射代码丢失,需要 link.xml 或调整 stripping
只在 Editor 测试,没有真机测试

学习路线

c
1. 先构建 Windows 包,理解场景列表和输出目录
2. 再学 Player Settings:名字、图标、版本号
3. 学 Development / Release 区别
4. 学 Android APK / AAB 和签名
5. 学 iOS Xcode 工程流程
6. 学 WebGL 发布
7. 最后学自动化构建、CI、Addressables、热更新资源

记住口诀:

c
Profile 选平台和场景。
Player Settings 定产品身份。
Development 给测试。
Release 给发布。
移动端要签名。
发布前必须真机验证。

参考:Unity 官方 Introduction to buildingBuild ProfilesCreate a build from the EditorPlayer SettingsAndroid build processiOS build processIL2CPPBuildPipeline.BuildPlayer

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0