欢迎光临散文网 会员登陆 & 注册

AssetBundle详解

2022-07-28 16:06 作者:YONCE1999  | 我要投稿

Asset(资源)Bundle(捆绑),顾名思义AssetBundle是一种用于存储资源的压缩格式打包后的合计,它可以存储如模型,纹理图,音频,甚至场景等等资源(不包括C#脚本),可以在游戏运行时被加载,主要作用有减少安装包体大小,实现可加载内容(DLC),减少运行时内存压力等等。

结合上一节UI管理器中的OpenWindow方法中需要传入窗口的Path地址,这里的地址实际上就是去AssetBundle中取得存储的预制,返回给UImanger后在进行实例化。这里需要实现一个AseetBundleManager来实现对于AB包的加载,卸载,以及读取便于统一管理等等。

AssetBundle Browser

AssetBundleBrowser是一个打包AseetBundle的便捷插件,可以浏览不同AB包中的内容以及压缩方式等等。这里简单略过,主要学习代码打包的流程。

通过添加Asset Labels的方式给资源分配到不同的AssetBundle中,同属一个Labels的资源会被打包到一起,不同的包中可能存在依赖关系,现在版本的处理方式是存在依赖关系的资源会被自动加入到所属包中,但是这样可能导致A包和B包都依赖于C包,那么C包会被分别加入到A包和B包中造成一定的浪费。

写一个拓展编辑器脚本用来打包AssetBundle,AssetBundle Browser插件可以直接实现类似的效果。(编辑器拓展脚本必须放在Asset的Editor文件夹下,没有得话自己新建一个)

打包后

把AB包打包到我们指定输出的路径下面,"Assets/BuildABs",这里测试打包了BuildABs以及prefab,接下来我们需要写一个资源管理器用于从AssetsBundle中取得对应的资源,期望可以通过资源路径来加载对应的资源。

  资源管理器

通过资源管理器,我们可以通过AssetBundle路径位置+资源名字的方式返回到存储的资源,例如在上一章中的UImanager的OpenWindow方法实现打开一个存储好的窗口预制。


路径存储

对于一些需要经常使用过的路径,例如资源的位置,AssetBundle的位置,可以写一个专门的Path静态类用来存储,当需要修改这些路径时,只需要修改Path静态类中的值即可,不影响其他调用的部分。

AssetBundle详解的评论 (共 条)

分享到微博请遵守国家法律