AssetBundle打包和各种加载方式

本文详细介绍了Unity中的AssetBundle概念,包括AssetBundle的压缩选项、创建AssetBundle的步骤,以及如何处理依赖关系。此外,还讲解了AssetBundle的加载机制,强调了正确加载依赖资源的重要性,并提到了资源管理的注意事项,如卸载资源和引用计数器的使用。
摘要由CSDN通过智能技术生成

1:什么是AssetBundle。
AssetBundle是从unity项目中打包出来的资源文件,可用于资源的更新等。AssetBundle支持3中格式的压缩选择,分别是LZMA,LZ4,无压缩。默认是LZMA格式的压缩,但是这样虽然可以使资源文件大小大大缩小,利于下载,但是也有不利的一面,在使用时会先解压再使用,所以会造成加载时间过长。
不压缩格式资源包会比较大,但是加载时不需要解压,所以加载时会更快。
2:怎么创建AssetBundle.
在unity5.x中资源打包已经大大优化,打包过程比unity4.x大大简化。可以自动打出依赖包。打包的过程有两种,第一种是给要打包的资源起一个名字。如下图
这里写图片描述
默认是不打包的,起名字后变为
这里写图片描述
当想把多个物体打到一个包里时,只需把多个物体设置成相同包名即可。设置好包名后,打包就容易的多了,打包代码如下:(注意,在运行此脚本之前,您需要在Assets文件夹中创建“AssetBundles”文件夹)
using UnityEditor;

public class CreateAssetBundles
{
[MenuItem (“Assets/Build AssetBundles”)]
static void BuildAllAssetBundles ()
{
BuildPipeline.BuildAssetBundles (“Assets/AssetBundles”, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSXUniversal);
}
}
生成AssetBundle的时候每个文件会多生成一个Manifest文件,每个文件多生成的Manifest 文件是不需要的,其作用就是供开发人员查看AssetBundle 中的依赖关系等信息。但除了每个文件多生成的 Manifest 以外,根目录下还会有一个与根目录同名的AssetBundle 以及 Manifest 文件,通过运行时加载这个AssetBundle,可以得到一个 AssetBundleManifest 对象,然后就可以通过这个对象得到AssetBundle直接的依赖关系。在AssetBundle打包时,只打包这个Prefab(不指定BuildAssetBundleOptions.CompleteAssets和BuildAssetBundleOptionsCollectDependencies)的话是不能正确实例化的,因为AssetBundle中的资源和Resource文件夹下资源是不会建立依赖关系的(脚本除外,因为开启BuildAssetBundleOptionsCollectDependencies 时,脚本依然不会打包到AssetBundle中)。所以会出现Mesh、Material等的丢失。
注意:
如果你只是给预制体起了名字而没有给预制体依赖的资源起名字的话,打出来的包就会把依赖的资源默认跟预制体打包到同一个assetbundle里,这样就造成了如果两个预制体使用同一份贴图资源,那么这个贴图资源就会分别跟两个预制体打包到一起,这就造成了内存的浪费。正确的做法是给贴图资源单独起一个名字,使其打包为一个包,然后预制体再分别打包,这样就会发现预制体的assetbundle包大大减小。但是,这样的话还有一个问题,就是每次要先加载依赖的资源,然后才能加载实例化。
3:如何加载资源。
要加载一个资源A,必须先去加载它的所有依赖资源,要知道这个资源A依赖了哪些资源,必须先去加载AssetBundleManifest,通过AssetBundleManifest对象的GetAllDependencies(A)方法,获取它依赖的所有资源。
依赖资源都加载了,就可以去真正加载资源A了。否则加载出来的物体就会材质丢失。
注意点:
1.资源A加载完了后,要记得Unload(false)ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值