天天看點

[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

寫一個實際商業項目中用到的資源更新案例。

繼續閱讀