Unity资源加载与释放-AssetBundle

AssetBundle 与 Resources的区别

Resources相当于Unity一个缺省的AssetBundle。
AssetBundle可以在使用时动态加载。
Resources.load();在没有第一次Instantiate之前没有完全加载Asset资源。所以相对AssetBundle去实例一个资源,Resources会在第一次Instantiate时出现卡顿现象。

AssetBundle 加载与释放

AssetBundle的加载方式有:AssetBundle.LoadFromFile(“”); AssetBundle.LoadFromMemorty(byte[]);及WWW方式。 
AssetBunddle.LoadFromFile(“”);只有在standalone上可以使用。WWW在加载AssetBundle时,会在内部创建assetBundle实例。 
当AssetBundle被加载到内存后,其实内存中只有AssetBundle文件的镜像内存。//todo 该镜像文件是AssetBundle原文件大小? 
当需要具体某个Prefab等资源时,使用assetbundle.Load(“”);加载具体资源。此时内存中会存在此资源的 GameObject、shaders、材质、贴图等内存。当具体Instantiate一个资源时,会对此资源的Asset资源进行clone+引用操作。Clone的资源包括GameObject、Tranform。引用的资源包括Texture、TerrainData、Shader。引用与Clone同时存在的包括 Mesh、material、PhysicMaterial、noxss。引用的资源只是指针的指向。Clone的会重新生成新的内存。 
根据AssetBundle资源的加载方式,当资源释放时,如果只是Destroy,只会释放生成这个资源时Clone的那部分内存。assetBundle.Load(“”);加载的Asset内存没有被释放,AssetBundle的镜像内存也没有被释放。所以如果在该资源被销毁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值