unity ios打包工具 unity打包aab_unity

1、在package Manager里面下载Asset Bundle Brower

unity ios打包工具 unity打包aab_热更新_02

安装完成后,在packages下可以看到Asset Bundle Brower

unity ios打包工具 unity打包aab_unity_03

点击windows列表下的Asset Bundle Brower唤出

unity ios打包工具 unity打包aab_包名_04

2、让资源跟AB包关联,并且能够打包出来

选择想要打包的资源

unity ios打包工具 unity打包aab_unity_05


点下面的New

unity ios打包工具 unity打包aab_unity ios打包工具_06


取一个包名

unity ios打包工具 unity打包aab_包名_07

这时候再点我们的windows列表下的Asset Bundle Brower,就可以看到东西传进去了

unity ios打包工具 unity打包aab_包名_08


unity里面的C#脚本是无法打包到AB包的,因此要用Lua进行热更新

因为C#是编译解释型语言,需要经过编译才能被最终执行(C#先把源代码编译成中间码,再解释执行中间码,既有编译又有解释的过程。所以说C#是编译型还是解释型语言,都是不够准确的。)

那我们那些预制体上的脚本资源呢

因为像下面这些Transform\Mesh\Collider等这些组件其实都是脚本

unity ios打包工具 unity打包aab_包名_09


那打包会不会把这些脚本打包进去?

其实,我们预制体上的这些组件,看起来像我们的组件

其本质是利用反射做的

这里记录的只是一堆数据而已

我们打包到AB包内的不是这些代码本身

而是这些预制体关联了那些C#代码

这是我们打开的其中一个预制体

unity ios打包工具 unity打包aab_解释型语言_10


可以看到他们其实是一堆文件信息

其关联的脚本都有一个ID

unity ios打包工具 unity打包aab_热更新_11


所以它不是把脚本放到AB包里,而是把关联的脚本信息放进AB包里然后,我们看第二个页键 Build

unity ios打包工具 unity打包aab_解释型语言_12

  • Build Target 构建平台
    每一次AB包打包需要指定平台
    不同平台需要重新打包才行
  • unity ios打包工具 unity打包aab_unity_13

  • OutputPath 输出路径
  • Clear Folders 是否清空文件夹(导入前把输出文件夹清空)一般勾选
  • Copy to StreamingAssets 一般勾选
    是否复制一份到StreamingAsset文件夹
    关于StreamingAsset文件夹:
  • unity ios打包工具 unity打包aab_解释型语言_14

  • Advanced Settings 高级设置
  • Compression
    压缩方式,一般选LZ4
    因为它是用什么解压什么,不会把所有资源都解压出来(因此其内存占用比较低)

最后我们点击Build

unity ios打包工具 unity打包aab_unity_15


unity ios打包工具 unity打包aab_unity_16


unity ios打包工具 unity打包aab_包名_17


inspect 主要用来观测我们包的一些信息的

unity ios打包工具 unity打包aab_解释型语言_18


unity ios打包工具 unity打包aab_包名_19

上面单词太长,就用简称表示

  • ET 一般不用
  • FR 重新打包时需要重新构建包
    和ClearFolders不同,它不会删除不再存在的包(比如下图中我把head删掉了,它build的时候还是会把它加进去,所以我们一般推荐使用ClearFolders)