Unity資源打包目的就是把一部分游戲資源或是需要熱更的資源從游戲安裝包中分離出來,降低安裝包的大小,在熱更或加載資源時再從服務器下載所需資源,當然已經下載的資源和不需要更新的資源不需要重復下載,Unity的打包可以也只能在unity的編輯器下進行,比如可以用unity提供的接口如下面代碼所示:
public static AssetBundleManifest BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform);
這個方法有三個參數,第一個是打包的路徑,相對於游戲項目的根目錄;第二個是打包壓縮的方式;第三個是包的目標平台,第一個和第二個不需要多做說明,大家都能明白,主要介紹一下第二個參數幾種壓縮方式各有什么優劣。
BuildAssetBundleOptions.None:使用LZMA算法壓縮,壓縮的包更小,但是加載時間更長。使用之前需要整體解壓。一旦被解壓,這個包會使用LZ4重新壓縮。使用資源的時候不需要整體解壓。在下載的時候可以使用LZMA算法,一旦它被下載了之后,它會使用LZ4算法保存到本地上。
BuildAssetBundleOptions.UncompressedAssetBundle:不壓縮,包大,加載快
BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4壓縮,壓縮率沒有LZMA高,但是我們可以加載指定資源而不用解壓全部。
注意使用LZ4壓縮,可以獲得可以跟不壓縮想媲美的加載速度,而且比不壓縮文件要小。