Skip to main content

简易打包流程

面试题

  1. 如何跨平台打包 AssetBundle?

以下是Unity AssetBundle在Android/iOS/PC三大平台的打包流程说明

可视化打包与依赖分析

AssetBundle Browserhttps://github.com/Unity-Technologies/AssetBundles-Browser

项目AndroidiOSPC
压缩格式LZ4(推荐)LZ4(避免卡顿)LZMA/None(调试)
路径前缀jar:file://Application.dataPath + "/Raw"直接路径
变体支持分辨率适配(hd/sd)同Android通常不需要
权限要求需网络/存储权限需ATS配置无特殊要求

img

img

📱Android平台打包流程

资源标记与分组

设置AB包名

  • 在Project视图选中资源(如Prefab、贴图)→ Inspector底部设置AssetBundle名称(必须小写字母
  • 依赖处理:共用资源(如材质)单独打包为shared包,避免重复。

配置打包参数

  • 工具:使用Unity官方插件AssetBundle Browser(需从GitHub导入)。
  • 关键设置
Build Target → Android  
Compression → LZ4(平衡加载速度与包体大小)
Output Path → 自定义目录(如`Assets/StreamingAssets`)

打包

  • 点击Build按钮 → 生成.unity3d文件及.manifest依赖文件。

🍎 iOS平台打包流程

资源标记

  • 与Android类似,但需注意:

  • 命名规则:AB包名避免特殊字符(iOS文件系统敏感)。

  • 变体支持:通过hd/sd后缀适配不同分辨率设备。

关键配置

  • 压缩格式:优先选择ChunkBasedCompression(LZ4)避免解压卡顿。
  • 路径处理
// iOS加载路径示例
string path = Application.dataPath + "/Raw/" + abName;

打包输出

  • 使用相同插件,选择Build Target → iOS → 生成AB包。
  • ATS限制:若从服务器下载AB包,需在Info.plist中禁用ATS或启用HTTPS。

💻 PC平台打包流程

资源准备

  • 路径规范:确保资源路径使用/而非\(Windows需转义)。
  • 调试优化:开发期可选择UncompressedAssetBundle加速迭代。

打包配置

Build Target → StandaloneWindows/StandaloneLinux  
Compression → None(快速调试)或 LZMA(发布包)

输出文件

  • 生成AB包后,直接通过本地路径加载:
AssetBundle.LoadFromFile("C:/Path/to/bundle.unity3d");

🔄通用流程

1. 依赖管理

  • 加载顺序:通过AssetBundleManifest获取依赖列表,先加载依赖包再加载主包。
AssetBundle manifestBundle = AssetBundle.LoadFromFile("AssetBundles/AssetBundles");
AssetBundleManifest manifest = manifestBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
string[] deps = manifest.GetAllDependencies("main.ab");

2. 热更新策略

  • 版本控制:服务器维护各平台的版本清单(如version_android.txt),比对哈希值决定是否更新。
  • 增量更新:仅下载差异包,减少流量消耗。