Unity3d资源包的使用心得
大學畢業頭一年就開始著手做資源管理,不過一開始都是學習使用assetbundle,怎樣打資源包,資源包里面資源的一些要求,怎樣簡單的處理依賴關系,讓資源包盡量小一點,打資源包簡單,就是把要添加的文件添加進來,然后打包就行了。
一開始我們采用的打資源包的選項是這么設置的
這樣打的資源包是沒有經過壓縮的,所以體積會非常的大,然后所有的依賴關系都包括在資源包里面,在使用的時候直接加載,用AssetBundle.CreateFromFile("路徑") 這種方法就可以直接同步的創建資源包,速度很快,資源包大的解決方式是參考了雨松大神的Unity3D研究院之Assetbundle的實戰(六十三) 來進行處理的,文章最后面寫了步驟,先打資源包,然后LZMA壓縮并將資源包上傳到你的服務器上面供下載,下載到本地之后,在app里面對資源進行解壓,游戲里面直接createformfile就可以使用,解壓的過程可能會慢一些,不同的機器性能不同,這樣主要是為了減少用戶下載資源等待時間,才采取的壓縮,最終解壓完成之后,資源包依然很大,所以在IOS那頭,你的游戲安裝包會很大。但是這種方式內存占用量小,加載創建速度快,同步創建,我覺得這種方式不錯,奈何顯示的包體太大。
再后來我們采用的打包選項是這么設置的
BuildAssetBundleOptions options = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.DisableWriteTypeTree;
只是將資源包壓縮的那個選項給去掉了,資源包果然縮小了好多,相比一開始,至少6倍左右的被縮小,因為這個方法,在一開始打資源報的時候,unity就自動給你壓縮了,省的你再處理一遍,通過這種方式打出的資源包,體積小,可以采用
byte[] stream = Global.GetAssetbundleFileInfoByName(_filepath);
bundle = AssetBundle.CreateFromMemoryImmediate(stream);
這種方式來進行加載,但是由于安卓平臺jar包的限制,就得采用www的方法,從包體里面取出資源包,然后進行創建,這樣就會存在一個異步的過程,然后再調用這種方法,創建資源包。這種方式較上一種在內存占用,進游戲速度上都明顯落后,內存占用變高很多,速度也稍微慢了一點,但是唯一的好處是,資源包體積很小,這對于用unity開發的確不錯,但是我并不喜歡啊。上面是我先把資源包里面的數據都讀出來了,也可以不那樣,采用
AssetBundleCreateRequest acr = AssetBundle.CreateFromMemory(stream);
yield return acr;
bundle = acr.assetBundle;
這種方式進行創建,效果是一樣的。
我們項目里面主要用的是ngui,所以用到了很多Label組件,給上面設置了字體,然后打包的時候,字體關系的依賴非常的多,所以就采用個一個腳本來給Label的Font進行設置,最后再打包的時候,所有的Label組件上面的字體資源都不進行設置,這樣打包資源就又小了些,挺好的。
這樣在程序運行的時候,先加載資源包,然后就可以根據你的設置用不同的字體嘍,哈哈。
在使用了資源報之后,都要對現在的所有用的資源,像圖集,腳本,預設進行動態加載,動態關聯部分,這樣才好,哈哈
又來了個新同事,又得給他講lua,哈哈
總結
以上是生活随笔為你收集整理的Unity3d资源包的使用心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关键词联想关联 php,ECSHOP商品
- 下一篇: 02构建之法第三章第四章及第五章阅读笔记