Unity热更新之AssetBundle(1)

前言

看了一篇面经,里面有一道题问的是AssetBundle的加载方式,所以抽空看了一看

AB包基础理论

了解AB包是什么

Unity热更新之AssetBundle(1)
但是不能将C#代码打包进去,所以我们热更新需要用lua来制作

了解AB包有什么作用

Unity热更新之AssetBundle(1)

生成AB包资源文件

Unity热更新之AssetBundle(1)
这里讲一下用AssetBundleBrowser来打包AB包

  1. 高版本自带的,只要下载导入即可

Unity热更新之AssetBundle(1)

  1. 新建一个Cube,将其拖入Resources文件夹下后删除,使其成为一个预制体,点击查看,拉到最下面,new一个ab包名,后面为后缀,无需管

Unity热更新之AssetBundle(1)
3. 打开window下的AssetBundleBrowser,可以看到已经多出了一个ab包,点击包名也可以看到Cube
注意点: U3D中C#代码不能打成AB包,所以要用lua进行热更新,因为C#是编译性语言,需要被编译才能被执行。
但是为什么cube上的组件脚本为什么能打包呢,其实预设体上的脚本是用C#反射来做的一个机制,预设体记录的只是一堆数据,打包进去的不是C#代码本身,而是预设体关联的那些C#代码。
4.最后是build
选择平台Unity热更新之AssetBundle(1)

输出路径
Unity热更新之AssetBundle(1)

清空文件夹,每次打包先清空之前的(建议勾选)
Unity热更新之AssetBundle(1)
建议勾选
Unity热更新之AssetBundle(1)
压缩方式
第一种不压缩,起不到压缩资源的用处(不推荐)
第二种,压缩的最小,解压时间最长(用压缩包的一个资源,把所有的资源都解压)
第三种,推荐,用一个解压一个
Unity热更新之AssetBundle(1)
最后的多个勾选项不细说了

Unity热更新之AssetBundle(1)