寫在前面的話
AssetBundles是從unity導(dǎo)出你選擇的assets,它使用特有的壓縮格式并且應(yīng)用可以實(shí)時(shí)去讀取它员舵。包括模型脑沿、貼圖、音頻等任何asset類型马僻,甚至整個(gè)場景庄拇。壓縮大小基本能達(dá)到zip的效果。AssetBundles從設(shè)計(jì)時(shí)就定位為可以很簡單就下載到應(yīng)用里韭邓。如果你想包括自定義的binary數(shù)據(jù)措近,就要用.bytes后綴,Unity將作為TextAssets導(dǎo)入他們仍秤。是目前來說比較主流的在運(yùn)行時(shí)即時(shí)加載資源的一種處理手段熄诡。
AssetBundles目前來說,并不能達(dá)到官方文檔中所說的那樣各版本兼容诗力。
資源打包
在unity3D中凰浮,打包AssetBundles使用BuidPipeline.BuildAssetBundle()來對資源進(jìn)行打包。
AssetBundles打包需要區(qū)分使用平臺苇本,更具不同的平臺袜茧,對AssetBundles分開進(jìn)行打包。
在打包的初始階段瓣窄,需要根據(jù)情況對打包資源進(jìn)行處理,最好的處理是將資源做成完整的Prefab笛厦,然后對這個(gè)完整的 prefab進(jìn)行打包。
在打包之前俺夕,需要在 Edit -> ProjectSettings -> ** GraphicsSettings** 中將所使用的材質(zhì)全部添加道Always Included shaders 中裳凸,否則會(huì)導(dǎo)致打包的素材材質(zhì)丟失贱鄙。
資源使用
AssetBundle資源的加載有多種方式,既可以使用WWW類進(jìn)行加載姨谷,也可以像讀取文件一樣逗宁,從文件流數(shù)據(jù)中進(jìn)行加載。
AssetBundle.CreateFromMemoryImmediate(byte[])函數(shù)可以即時(shí)加載AssetBundle文件梦湘,適合文件大小不太大的資源的即時(shí)加載
AssetBundle打包的資源瞎颗,記錄了資源的類型,聲音類型的資源類型為UnityEngine.AudioClip捌议,圖像類型的資源類型為UnityEngine.Texture2D哼拔,GameObject類型的資源類型為UnityEngine.GameObject;