关于Unity资源的动态加载与WWW的使用

第一次自己写博客,刚刚工作2年,还只算个新人,稍微把自己平常看的写一下,如果有不对,还请各位指导

资源动态加载有3种方式
Resource.Load()
AssetBundle
AssetDatabase

Resource.Load只能加载Resource下的文件目录
AssetDatabase 只能在Editor下使用

如果希望热更新资源 那么就需要使用AssetBundle
AssetBundle打包这里就不说了,不懂得上网查

那么如何得到AssetBundle?
使用WWW,这里有2个方法
一:WWW w = new WWW(Path);
通过new WWW从path地址下载资源从WWW.assetBundle中得到.
如果你只是希望相同版本下只下载一次,那么可以通过一些方法将WWW.bytes存在本地中,下次加载的时候可以 new WWW(从你自定义的位置中直接得到),不需要重新从网络中下载
private void SaveToPersistentPath(string path, byte[] bytes)
{
try
{
if (File.Exists(path))
File.Delete(path);

FileStream stream = new FileStream(path, FileMode.Create);
stream.Write(bytes, 0, bytes.Length);
stream.Flush();
stream.Close();
}
catch (System.Exception ex)
{
Debug.Log("Save to persistent path error: " + ex.Message);
}
}


二: WWW w = WWW.LoadFromCacheOrDownload(path, version)
同样是下载,在第一下载的过程中其实差不多,但是LoadFromCacheOrDownload下载完成后,会将资源直接存入缓存里面并将path作为该资源的标识符,
下次加载的时候会查找是否存在该path的标识符,如果存在,那么说明下载过了,接下来就是判断uint的version,如果传入的version>缓存中资源的version那么会重新从path下载,否则直接调用缓存里面的资源


比较:
new WWW(Path)与 WWW.LoadFromCacheOrDownload(path, version)相比
第一次下载的情况下LoadFromCacheOrDownload多了一个存入缓存的操作,相对上LoadFromCacheOrDownload比较慢(不算自己将资源写入本地这个操作)
但是第二次开始LoadFromCacheOrDownload直接从缓存中读取(相当于直接从内存中读)不会加载到内存中,所以说,第二次以后LoadFromCacheOrDownload的效率明显较高

但是使用new WWW(Path)后自己写入资源,可以自己管理下载的资源每次加载可以自己写方法判断资源是否还有用,是否可以清理掉
但是 LoadFromCacheOrDownload虽然会不断自动清理太久不动用的资源,但是不能自己控制




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值