Unity Assetbundle的加載方式的效率和內存佔用

首先,簡要介紹一下加載AssetBundle的主要兩種方式,分別是new WWW(url)和WWW.LoadFromCacheOrDownload,兩種方式的具體用法,自己查官方API,這裏不再敘述

new WWW是單純地把AssetBundle加載到內存

WWW.LoadFromCacheOrDownload是把AssetBundle寫入到緩存中,然後在需要加載AssetBundle時,再從緩存中讀取AssetBundle,達到一個加速效果,而且只在內存中保存一些必要的緩存指針信息,因此非常省內存,目前我在的公司都是用這種加載方式

這次主要是比較這兩種方式的加載效率




測試結果:

1.在PC上,兩種方式的效率,第一次只相差大約40%,可能PC端的硬盤有高速緩存和讀寫速度相對較快的原因,而在移動端,效率則相差2倍之多
2.第二種方式在二次讀取時,速度很快
3.推薦使用第二種方式


總結:根據上面的比較,可以看出WWW.LoadFromCacheOrDownload雖然在第首次加載時,略慢於new WWW,但在之後的二次加載(如退出遊戲程序,再次進入遊戲,也算二次加載),WWW.LoadFromCacheOrDownload會帶來更加快的加載速度和更加節約內存,即使是一百多兆的資源,全部加載完成,也大概只佔不要10MB的內存,因爲Unity給它們都做了硬盤緩存,開闢了大量的磁盤空間來換取消耗大量內存的代價。並且在加載完AssetBundle後,實例化的速度和new WWW的無任何差異。WWW.LoadFromCacheOrDownload完勝!


其他注意點:

  1. 使用WWW.LoadFromCacheOrDownload加載時,若磁盤空間已滿並所有的緩存文件都在使用中,則WWW.LoadFromCacheOrDownload會調用new WWW()方式,把資源載入內存中。較好地解決了磁盤不足的情況
  2. 在緩存中,Unity進行資源識別的唯一方式是資源名稱+版本號,因此無論是何種資源,資源名稱不能相同
  3. 對緩存的所有操作都在Caching類中,僅提供簡單的查詢和清除操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章