AssetBundle(一)——AssetBundle介绍
一:什么是AssetBundle?
Asset(资源) + bundle(捆绑) = AssetBundle(资源打包),一个AssetBundle就是一组资源的集合(可以压缩也可以不压缩),简称为AB包
——打包后:它是一个真实存在于硬盘上的文件,里面可能包含多个文件(模型、贴图、材质、预制体、声音、场景等),在游戏运行时被加载出来
这些文件可以分为两类:Serialized File(序列化文件)和Resource File(源文件)
Serialized File:资源(预制体,模型.....)被打碎放在同一个对象中,最后统一被写进一个单独的文件,最后只有一个文件
Resource File:某些资源(图片,声音.....)被单独保存为二进制文件,方便快速加载
——使用时:它是一个AssetBundle对象,我们可以通过代码从一个特定的压缩包里加载出来这个AssetBundle对象,这个对象包含了所有我们当初添加到包里面的内容
二:为什么要使用AssetBundle
——将可以下载的内容放在AssetBundle里面,在游戏运行时再被加载,可以减少安装包的大小
——AssetBundle可以实现资源的热更新,不需要下载整包
三:AssetBundle的依赖关系
例如A包是一个材质包,B包是一个贴图包,A包中的材质引用B包中的贴图,如果不加载B包只加载A包,则A包中材质的贴图是丢失的
四:解读AB包中的文件
例如一个预制体A,赋值了材质和贴图B和C,将A设置为cube,B和C设置为share,打包后发现文件夹下出现以下文件,那么它们都有什么作用呢
——AssetBundles:打包成功后,会为当前目录生成一个与目录名同名的二进制文件和一个与目录名同名的manifest文件,与目录名同名的manifest文件(AssetBundles.manifest)记录了所有AB包和AB包的引用关系
——cube文件和share文件:二进制文件不可读,是我们打包的AB资源
——cube.manifest和share.manifest:cube文件和share文件对应的manifest文件,记录了这个AB包中资源路径和具体依赖了哪些包
目录对应的主manifest文件:(记录的都是AB包中的路径)
CRC:校验码
Info:记录每个AB包的AB包路径以及每个AB包自身依赖的AB包路径
单独AB包的manifest文件:
CRC:校验码
Assets:记录了当前包中每个资源的真实路径(Unity中的路径)
Dependencies:记录了当前包中资源的依赖关系(AB包中的路径)
五:AssetBundle分组策略
——逻辑实体分组
一个UI界面或者所有UI界面一个包(这个界面里面的贴图和布局信息一个包)
一个角色或者所有角色一个包(这个角色里面的模型和动画一个包)
所有场景所共享的部分一个包(包括贴图和模型)
——按照类型分组
所有声音资源一个包,所有shader一个包,所有模型一个包,所有材质一个包
——按照使用分组
把在某一个时间内使用的所有资源打成一个包
可以按照关卡分,一个关卡所需要的所有资源包括角色,贴图,声音等打成一个包
也可以按照场景分,一个场景所需要的资源打成一个包
——把经常更新的资源放在同一个包中,不经常更新的资源与它分离
假如我们有A,B两个资源,每个资源都是100MB,A经常更新,B不经常更新
如果把A和B打成一个包,那么更新了A资源之后还是需要下载整个包,则为200MB
如果将经常更新的A资源与B资源分别打包,则当更新了A资源之后只需要下载更新的A资源包就可以,只需要下载100MB
——把需要同时加载的资源放在同一个包里
假如我们有A,B两个资源,它们是需要同时使用的,则把A资源和B资源打成一个包会更方便
——把其他包共享的资源放在一个单独的包里面。
假如我们有A,B,C三个资源。A和B是预制体,C是一个材质,A和B共享了C的材质。
如果不把材质单独打包的话,打包时会把A和B依赖的资源同时打进各自的包中,那么包中的资源会出现重复,增加包的大小。
如果把材质单独打包的话,A和B去引用C的材质,这样会避免资源重复打包,减小包的大
——把一些需要同时加载的小资源打包成一个包
AssetBundle(一)——AssetBundle介绍相关推荐
- 游戏资源差异化热更新及加密全攻略(Assetbundle 打包 AssetBundle 加载 AssetBundle 加密)
游戏热更新资源加密的必要性 unity中资源热更新还是Assetbundle为主,资源使用越来越广泛,ab包里可以包含图片.视频或者脚本,都是游戏的知识财产,如果被破解者或者竞争对手解开,拿到里面的内 ...
- AssetBundle and the AssetBundle Manager介绍
AssetBundle and the AssetBundle Manager 介绍 AssetBundle允许从本地或者远程服务器加载Assets资源,利用AssetBundles技术,Assets ...
- Unity AssetBundle介绍
https://blog.csdn.net/qq_19269527/article/details/86366467 1.什么是AssetBundle? AssetBundle是一种资源压缩包.资源打 ...
- combotree 可以异步加载吗_Unity AssetBundle 资源打包,加载,本地缓存方式,安卓,PC本地加载路径问题...
AssetBundle的定义和作用: 1,AssetBundle是一个压缩包包含模型.贴图.预制体.声音.甚至整个场景,可以在游戏运行的时候被加载. 2,AssetBundle自身保存着互相的依赖关系 ...
- Unity AssetBundle内存管理相关问题
AssetBundle机制相关资料收集 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个 ...
- unity 打包AssetBundle
unity提供了assetbunlde机制,下面介绍一种方法将指定目录下的所有文件打包成AssetBundle 先说明步骤,再上代码. 步骤一.选择要打包成assetbundle的目录,本案例使用as ...
- 【专栏精选】Assetbundle入门
本文节选自洪流学堂公众号技术专栏<大话Unity2019>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 洪流学堂,让你快人几步.你好,我是郑洪智. 小新:"昨 ...
- 【Unity3D】基于AssetBundle实现资源热更新
1 前言 Unity3D 本地资源一般放在 Resources 目录下,但是 Resouces 文件夹的大小不能超过 2G,使用 AssetBundle 管理资源可以解决 Resources 文件夹受 ...
- Unity文档——AssetBundle使用模式
AssetBundle使用模式 版本检查:2017.3 - 难度:高级 这是关于Unity 5中资产,资源和资源管理的系列文章的第五章. 本系列的前一章介绍了AssetBundles的基础知识,其中包 ...
- Unity最新版打包AssetBundle和加载的方法
一.设置assetBundleName 二.构建AssetBundle包 三.上传AssetBundle到服务器 四.把AssetBundle放到本地 五.操作AssetBundle 六.完整例子 七 ...
最新文章
- python Class:获取对象类型
- Universal-Image-Loader 示例 工具
- 单向环形列表及应用场景(约瑟夫环)
- [转贴]电视和显示器的相关语言
- 【数据结构与算法】双链表V3.0的Java实现
- 为什么在WSE配置中不要选择Establish Secure Session
- MyBatis 基础知识
- 马鞍数55c语言_c语言超全练习题(全面更新)
- CAD制图软件中如何设置CAD打印样式表(CTB)?
- for循环及判断语句的20个经典习题
- 【多任务学习】多任务学习中的任务选择机制(Task Selection Policies for Multitask Learning)
- php微信jsapi支付案例,PHP实现微信支付(jsapi支付)流程
- 一个野生程序员的自我修养
- 公众号搜题题库接口使用方法
- 三代Pacbio进行细菌16S全长测序
- 2021年5月23日哈工大scir笔试
- 异常:egret获取引擎列表失败
- 利用OpenCV进行动态画椭圆,直线,矩形
- 黑客逆向破解基础-3:如何识别程序加的什么壳
- 巴别塔合约作战终端开发日记2——Linux系统部署项目