Appearance
构建发布系统
一句话理解
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 .appPublish 是发布到渠道:
c
Steam
itch.io
Google Play
App Store
网页服务器
公司内测平台所以:
c
Build = 做出产品包
Publish = 把产品包交给玩家2. Build Profiles
Unity 6 里主要用:
c
File > Build Profiles旧教程里常说:
c
File > Build SettingsUnity 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 GameOver3. 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 ProfileWebGL:
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 building、Build Profiles、Create a build from the Editor、Player Settings、Android build process、iOS build process、IL2CPP、BuildPipeline.BuildPlayer。