天天看点

[Unity]AssetBundle资源更新以及多线程下载

[Unity]AssetBundle资源更新以及多线程下载

1.WWW下载图片资源

2.HTTP下载apk文件,并且支持断点续传,并且显示加载进度条

3.HTTP多线程下载文件

WWW是Unity给我们封装的一个基于HTTP的简单类库,如果我们做很简单的下载,或者网络请求可以用这个类库,个人觉得这个封装的并不是很好,所以一般商业项目开发都不会使用这个,宁可自己去封装一个HTTP请求和下载的类库,可控性更好。仅仅是个人观点,不喜勿喷。

主要用的核心类是HttpWebRequest,用这个类创建的对象可以申请下载的文件的大小以及下载的进度。移动上可读写的目录是PersidentDataPath,并且各个移动设备的路径不同,这点要注意,所以我们下载的AB资源就会下载到这个目录。

[Unity]AssetBundle资源更新以及多线程下载

多线程下载思路是计算一个文件包大小,然后创建几个线程,计算每一个线程下载的始末下载的位置,最后是合并成一个整体的文件包写入到本地。

[Unity]AssetBundle资源更新以及多线程下载

线程下载速度跟线程的关系呈钟罩式关系,也就是说适量的线程数量会提高下载速度,但并不是说线程数越多就越好,因为线程的切换和资源的整合也是需要时间的。下面就列举下载单个文件,创建的线程数和对应的下载时间:

单线程

[Unity]AssetBundle资源更新以及多线程下载

5个线程

[Unity]AssetBundle资源更新以及多线程下载

15个线程

[Unity]AssetBundle资源更新以及多线程下载

这里我是1M的带宽,下载的是一个300KB左右的资源,一般不会做多线程下载单一资源,多线程下载一般用于下载多个资源,除非单一资源真的很大才有多线程下载,然后做合包操作。

<a href="http://git.oschina.net/dingxiaowei/UnityResourceDownload" target="_blank">http://git.oschina.net/dingxiaowei/UnityResourceDownload</a>

关注后续更新请点start或者fork,感谢!

1群

[Unity]AssetBundle资源更新以及多线程下载
[Unity]AssetBundle资源更新以及多线程下载

1群如果已经满员,请加2群

159875734

写一个实际商业项目中用到的资源更新案例。

继续阅读