Unity热更新之AssetBundle——AB包资源打包

在这里插入图片描述

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

在这里插入图片描述安装完成后,在packages下可以看到Asset Bundle Brower
在这里插入图片描述点击windows列表下的Asset Bundle Brower唤出

在这里插入图片描述

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

选择想要打包的资源
在这里插入图片描述
点下面的New
在这里插入图片描述
取一个包名
在这里插入图片描述这时候再点我们的windows列表下的Asset Bundle Brower,就可以看到东西传进去了
在这里插入图片描述
unity里面的C#脚本是无法打包到AB包的,因此要用Lua进行热更新
因为C#是编译解释型语言,需要经过编译才能被最终执行(C#先把源代码编译成中间码,再解释执行中间码,既有编译又有解释的过程。所以说C#是编译型还是解释型语言,都是不够准确的。)
那我们那些预制体上的脚本资源呢
因为像下面这些Transform\Mesh\Collider等这些组件其实都是脚本
在这里插入图片描述
那打包会不会把这些脚本打包进去?
其实,我们预制体上的这些组件,看起来像我们的组件
其本质是利用反射做的
这里记录的只是一堆数据而已
我们打包到AB包内的不是这些代码本身
而是这些预制体关联了那些C#代码
这是我们打开的其中一个预制体
在这里插入图片描述
可以看到他们其实是一堆文件信息
其关联的脚本都有一个ID
在这里插入图片描述
所以它不是把脚本放到AB包里,而是把关联的脚本信息放进AB包里

然后,我们看第二个页键 Build
在这里插入图片描述

  • Build Target 构建平台
    每一次AB包打包需要指定平台
    不同平台需要重新打包才行
    在这里插入图片描述

  • OutputPath 输出路径

  • Clear Folders 是否清空文件夹(导入前把输出文件夹清空)一般勾选

  • Copy to StreamingAssets 一般勾选
    是否复制一份到StreamingAsset文件夹
    关于StreamingAsset文件夹:https://blog.csdn.net/qq_31967569/article/details/82851367
    在这里插入图片描述

  • Advanced Settings 高级设置

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

最后我们点击Build
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
inspect 主要用来观测我们包的一些信息的
在这里插入图片描述
在这里插入图片描述上面单词太长,就用简称表示

  • ET 一般不用
  • FR 重新打包时需要重新构建包
    和ClearFolders不同,它不会删除不再存在的包(比如下图中我把head删掉了,它build的时候还是会把它加进去,所以我们一般推荐使用ClearFolders)
    在这里插入图片描述在这里插入图片描述
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
AssetBundle 引用计数是指在使用 AssetBundle 打包资源的时候,记录每个 AssetBundle 被使用的次数,以便在使用完后及时释放资源,从而避免内存泄漏。在使用 AssetBundle 加载资源时,会对加载的 AssetBundle 进行引用计数的增加,使用完后再进行引用计数的减少,当引用计数为 0 时,就可以释放该 AssetBundle资源。 AssetBundle打包和加载一般分为以下几个步骤: 1. 打包资源文件:使用 Unity Editor 自带的 AssetBundle 打包工具,将需要打包资源文件进行打包,生成 AssetBundle 文件。 2. 加载 AssetBundle 文件:在游戏运行时,使用 Unity 提供的 AssetBundle.LoadFromFile 或 AssetBundle.LoadFromMemory 函数来加载 AssetBundle 文件。 3. 加载资源文件:使用加载的 AssetBundle,使用 AssetBundle.LoadAsset 或 AssetBundle.LoadAssetAsync 函数加载需要使用的资源文件。 4. 使用完成后,释放资源:使用 AssetBundle.Unload(false) 函数来释放 AssetBundle 中的资源,同时进行引用计数的减少。如果不再需要该 AssetBundle 中的任何资源,可以使用 AssetBundle.Unload(true) 函数来彻底释放该 AssetBundle括清除 AssetBundle 的缓存。 使用 AssetBundle 打包和加载资源可以有效地减少应用程序的内存占用,提高应用程序的性能。同时,在使用 AssetBundle 的时候,需要注意避免重复加载同一个 AssetBundle,以及及时释放不再使用的 AssetBundle 资源,避免内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值