【Unity3D】Bundle打包及加載流程Android篇


一、生成資源Bundle文件

    生成Bundle文件主要是如何對資源進行設置Bundle名及其分類的過程。目前有兩種方式,第一種就是在編輯器里面設置每個資源的Bundle名稱(如圖1),這是最簡單直觀的操作方式;另一種方式就是通過編寫代碼並配合資源配置文件進行控制,先通過代碼遍歷項目工程的資源然后根據資源配置設置其Bundle名稱,也可以暴力的按照資源類型進行分類,由於不同項目的控制方式不同,因此就不過多介紹。

圖1

    將資源都設置好對應的Bundle名稱后,即可進行生成Bundle文件的操作,其代碼就相對簡單(如圖2),只需調用Unity現成的API接口。在Assets/Editor(如果沒有需創建)目錄中創建一個合適名稱的cs文件,里面加入一個生成Bundle的方法如下。然后就可以通過菜單上面的Tools/BuildBundleDefault生成Bundle文件。

圖2

    [注意事項]

    1. Scene文件不能與其他資源文件設置為同一個Bundle,否則會報錯誤。但是多個Scene文件可以設置為同一個Bundle。

    2. 需要記錄資源和Bundle以及相關依賴的關系到文件,以便在加載的時候使用。

 

二、打包Apk包

    從今天也就是2021年8月1日起,上架Google的包必須是aab格式,但暫時依然先打apk包,后續文章將帶來如何打aab包。同一是在Editor目錄創建一個用於寫打包apk代碼的cs文件。這里我略去了許多的屬性設置及資源檢查處理相關的代碼(Bundle文件全部已放在Assets/StreamingAssets目錄)。

圖4 注意“加密方式”寫錯應該是壓縮方式

   

三、運行時加載資源

    運行時加載游戲資源前首先需要加載Bundle文件,這里需要注意的就是同一個Bundle在沒有卸載前不能重復加載,否則會報錯。

圖5

    Bundle加載完成后,就可以通過bundle.LoadAsset<GameObject>(資源路徑)獲取對應的對象,然后進行初始化顯示。

圖6

    [注意事項]

    1. 在生成Bundle的時候有特別說明需要將資源與Bundle的關系記錄下來,其目的就是加載資源時加載的接口只需傳入要加載的資源名稱即可,而無需關心其在哪個Bundle中,當然加載接口內部需實現先通過資源名稱查找Bundle並進行加載后,在返回對應的資源。

    2. 如果這個資源有依賴的資源在其他的Bundle,也需要將其他的Bundle加載進來,否則就會出現丟失資源的問題。

    3. 加載場景的方式比較特殊需要單獨處理。

四、總結

    本篇介紹了生成Bundle文件、打apk包、然后運行時加載Bundle文件讀取資源的流程。主體的流程就這么多,打包過程中還可以加入很多其他的流程,例如資源檢查、插件打包選擇等等。關於Android App Bundle(AAB)包目前已經完成了整體的打包和加載流程,為了確保准確性將會在Google商店上架測試之后再做介紹。

    文章來自我的公眾號,大家如果有興趣可以關注,具體掃描關注下圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM