AssetBundle打包(入門)

歡迎加入Unity業內qq交流羣:956187480

qq掃描二維碼加羣


一.AssetBundle簡介

1.什麼是Assetbundle?

它是一個存在於硬盤上的文件。可以稱之爲壓縮包。這個壓縮包可以認爲是一個文件夾,裏面包含了多個文件。這些文件可以分爲兩類:serialized file 和 resource files(序列化文件和源文件)。serialized file:資源被打碎放在一個對象中,最後統一被寫進一個單獨的文件(只有一個);resource files:某些二進制資源(圖片、聲音)被單獨保存,方便快速加載

它是一個AssetBundle對象,我們可以通過代碼從一個特定的壓縮包加載出來的對象。這個對象包含了所有我們當初添加到這個壓縮包裏面的內容,我們可以通過這個對象加載出來使用。

2.Assetbundle的作用?

AssetBundle是Unity引擎提供的一種資源打包方式,可以對除了C#腳本外的任何資源進行打包壓縮處理。

如果想在Unity平臺實現Lua熱更新,Assetbundle技術是無法跳過的知識點,在unity平臺我們進行熱更新下來的資源都是需要事先進行Assetbundle打包處理的。

二.AssetBundle打包流程

1.編輯器擴展編寫

打包過程需要在編輯器模式下進行,所以我們就需要擴展編輯器,也就是不用運行就能執行的邏輯

public class EditorMenu {

    [MenuItem("Tool/BuildAssetbundle")]
    static void BuildABs()
    {
        //打包後的資源存放路徑,這個路徑根據項目情況不定
        string abDataPath = Application.streamingAssetsPath ;
        if (!Directory.Exists(abDataPath)) Directory.CreateDirectory(abDataPath);
        //BuildAssetBundle函數後的三個參數分別爲:存儲路徑;壓縮方式;資源目標平臺
        var a = BuildPipeline.BuildAssetBundles(abDataPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
        EditorUtility.ClearProgressBar();
        Debug.Log("AssetBundle打包完畢");
    }
}

2.打包類型及打包平臺

BuildAssetBundleOptions

BuildAssetBundleOptions.None:使用LZMA算法壓縮,壓縮的包更小,但是加載時間更長。使用之前需要整體解壓。一旦被解壓,這個包會使用LZ4重新壓縮。使用資源的時候不需要整體解壓。在下載的時候可以使用LZMA算法,一旦它被下載了之後,它會使用LZ4算法保存到本地上。

BuildAssetBundleOptions.UncompressedAssetBundle:不壓縮,包大,加載快

BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4壓縮,壓縮率沒有LZMA高,但是我們可以加載指定資源而不用解壓全部。 注意使用LZ4壓縮,可以獲得可以跟不壓縮想媲美的加載速度,而且比不壓縮文件要小

BuildTarget

Unity具有跨平臺性,所以在打包的時候就要考慮到平臺差異。打包的時候就要選擇合適的平臺類型

3.AssetLables資源標籤

在Unity環境內除了腳本文件,選中任何文件在Inspector面板下都會出現一個AssetLables界面,我們通過這個給資源設置assetbunddle的文件名跟文件後綴。文件名就是打包ab包後的文件名是可以分目錄嵌套的,後綴的話常用的有unity3的,assetbundle,ab等自定義,也可以不設置後綴,在文件名後面加後綴也行。文件名跟後綴都是小寫。

AssetBundle分組策略總結:

a,把經常更新的資源放在一個單獨的包裏面,跟不經常更新的包分離

b,把需要同時加載的資源放在一個包裏面

c,可以把其他包共享的資源放在一個單獨的包裏面

d,把一些需要同時加載的小資源打包成一個包

e,如果對於一個同一個資源有兩個版本,可以考慮通過後綴來區分  v1  v2  v3  

4.Manifest文件 

打包結束後的資源包由兩部分構成,一個是AssetBundle文件,另一個是Manifest文件

.meta文件是unity內部自動生成的文件可以忽略,manifest文件是專門用於存儲打包後的AssetBundle文件的基本信息的。主要包含以下信息:

CRC校驗碼:類似於MD5,用於計算該資源的一個特殊信息標識

ClassTypes:當前資源關聯使用到了Unity中的哪些類,這些類是以編號索引的形式存在的,每一個編號對應一個類文件


歡迎加入Unity業內qq交流羣:956187480

qq掃描二維碼加羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章