u3d的assetbundle真的是博(坑)大精(坑)深啊
安卓的話要先打包到streamingassetpath中,安裝後第一次執行,自動把streaming 中的解壓到persistentdatapath中,因為persistent目錄是在執行過一次才建立的。
但是,webgl專案呢
這個就不存在什麼streaming或者persistent了,因為不能載入本地路徑
所以就只有快取,載入包時就要用
www.loadfromdownloadorcache(url, version)
那麼得想辦法動態的獲取包的這個版本,那麼
www.loadfromdownloadorcache(url, version)
這個過載方法就不合適了,因為這個version沒找到辦法獲取……
文件裡說的是這個version要自增,也就是新的version要大於老的才更新,不過看網上有人說只要版本號不同,就更新,無論是大於還是小於,這個沒試過,不過也無所謂了。
看了一眼,這個載入方法的另一項過載是:
public static www loadfromcacheordownload(string url, hash128 hash, uint crc);
說明:以下只是目前的乙個設想,沒有實踐
首先說最後乙個引數crc,按文件裡說的,這個值非0時則對比crc,目前不關心這個,就讓它是0
最重要的就是第二個引數hash
文件解釋:
hash hash128 which is used as the version of the assetbundle.
對比這個可以相當於version版本。
那好,想辦法得到各assetbundle包的hash128
從manifest檔案下手,打包之後會有個總的manifest檔案,和你的包的根目錄名同名
比如打包在streamingassets下,則其目錄下有乙個streamingassets.manifest檔案
using(www www=www.loadfromdownloadorcache("..../streamingassets/streamingassets"))
}
如上,getallassetbundles()可以得到所有包的包名
再用getassetbundlehash(包名)得到包對應的hash128
那麼每次載入資源之前,先把包的hash128獲取到,再用
public static www loadfromcacheordownload(string url, hash128 hash, uint crc);
這樣每次載入都會對比這個hash128值,這個就相當於是版本了
我試了一下,在開發環境下,如果資源沒有任何修改,反覆打包,出來的這個hash128是不變的,如果有修改,比如材質的顏色變化一下,prefab的scale變化一下之類的,再打出來的包,hash128就變化了。
理論上說,這樣loadfromdownloadorcache就可以判斷出有沒有更新了
所以,每次開啟程式,首先載入總的manifest,把包和對應的hash128存到乙個地方,比如字典
dictionarybundlehashdict = new dictionary();
using(www www=www.loadfromdownloadorcache("..../streamingassets/streamingassets"))
}
要載入乙個名叫「a.assetbundle"的包
string path = "...../a.assetbundle";
hash128 hash=bundlehashdict["a.assetbundle"];
using(www www = www.loadfromdownloadorcache(path, hash, 0))
理論上如此,有待實踐
**
Bitmap的高效載入與Android快取
bitmap 1.bitmap是android中的影象處理最重要的類之一 2.通過bitmap能獲取的資訊 3.獲取到資訊後,可對其進行縮放,裁剪等操作 bitmap為我們提供了對影象檔案的操作支援,就像file類提供對檔案的操作支援一樣。bitmap的載入方式 為什麼要高效率的載入bitmap?1...
Mybatis個人學習筆記(六) 延遲載入與快取
在真正使用資料時才發起查詢,不用的時候不查詢,按需載入。懶載入 舉例 乙個使用者關聯100個賬戶,查詢使用者時,是否需要把關聯的賬戶資訊全部查詢出來?舉例 查詢賬戶時,需要用到使用者資訊,則需要立即把關聯的使用者資訊一起查詢出來 只要以呼叫方法,立即發起查詢 在對應的四種表關係中 一對多,多對多 通...
django rest framework快取應用
在我們web製作過程中進場使用到快取技術,那麼今天python中的一種簡單便捷的快取技術與大家分享 以下是在省 市 區 聯動的位址查詢做的快取處理 使用快取 省市區的資料是經常被使用者查詢使用的,而且資料基本不變化,所以我們可以將省市區資料進行快取處理,減少資料庫的查詢次數。在django rest...