简介?
AssetBundles是在编辑期间在Unity编辑器中创建的文件,稍后可以在运行时通过构建项目来使用。 AssetBundles可以包含资源文件,例如模型,材质,纹理和场景。AssetBundles不能包含脚本。AssetBundle在实际开发中是必不可少的。
详细些?
具体而言,AssetBundle是保存在一个文件中的项目资产或场景的集合,目的是将其单独加载到构建的可执行应用程序中。AssetBundles可以被Unity构建的游戏或应用程序按需加载。这就允许流式传输和异步的方式加载内容,例如模型,纹理,音频剪辑甚至整个场景。当第一次运行应用程序时,AssetBundles可以“预先缓存”并存储在本地以便立即加载。然而,AssetBundles的主要目的是按照需要从远程位置传输内容,并按照需要 加载到应用程序中。AssetBundles可以包含Unity认可的任何种类的资产类型,包括自定义二进制数据。唯一的例外是不允许脚本。
好处?
- 通过联网加载资源包的方式来减小初始安装包体的大小。同时,可以通过决定什么时候加载什么样的资源包来提高资源加载得灵活性。
- 提供热更新。
- 无需为其他平台或解决方案下载或存储冗余资源即可加载平台和设备特定资源。
可以说十分有用了。
基本常识
AssetBundle中项目资源的组织细节得依你具体的项目需求而定。然而,以下这些基本常识是不变的。
- AssetBundles将全部下载并缓存。
- AssetBundles不需要全部加载。
- AssetBundles中的资产可以依赖于其他资产。
- AssetBundles中的资产可以与其他资产共享相关性。
- 每个AssetBundle都有一些技术开销,无论是文件大小,都需要管理该文件。
- AssetBundles应该为具体的目标平台构建。
注:
- 当在组织AB(代AssetBundles)资源时,要依照项目需求,在(需要跟踪且产生开销的)小资源和(块大冗余的)大资源之间做好平衡。
- 根据导入设置和当前的目标平台,AB的内容针对当前目标平台进行编译和优化。因此,应该为每个目标平台构建ABs。
依赖、清单管理
- 依赖
加入到AB中的资源会自动把相应依赖资源也一并加入AB。但,这也会导致资源的重复。
例如,不同AB中的资源用到相同依赖资源,那么就会导致重复。这就导致相同依赖的好处消失了。
如何避免资源重复呢?
将依赖资源单独分给一个AB。这样,对这个资源有依赖的资源就会依赖于这个AB。 - 清单
所有项目的AB和依赖关系都储存在类似“目录”的清单文件中。针对平台会产生一个清单文件,列出所有ABs,存储并跟踪其所有依赖关系。 - AssetBundle Variants
AB有一个称为AssetBundle Variants的特殊设置。它旨在支持一个特定用例 - 将不同资产的选择重新映射到项目中的单个对象。什么意思?这个设置对于多分枝的特殊化很有好处。当处理需要根据分辨率,语言,本地化或用户偏好等标准从各种不同的可能选择中选择一个资产的项目时,这尤其有用。
在编辑器中组织&设置ABs
设置AB要新建就在第一个栏目里点击new,要删除就点击none,命名全部小写。
使用AB变体
用前须知:
- AssetBundle变体提供不同版本的相同资产以分配给场景中的对象。
- 同种资源的AB变体之间的区别在于其包含的不同资源和不同名字。
-
要想让AssetBundle变体之间相互兼容,AssetBundle的文件夹结构和内容必须匹配。所有资产都必须存在于每个AssetBundle中,并且必须具有相同的名称和相同的层次结构。就像这样:
AB变体间的目录结构
通过第二个选框填写区分AB变种的名称:
图中的hd就是变种名称
网友评论