客戶端熱更新框架之UI熱更框架設計(下)

       上一篇筆者介紹了關於什麼是熱更新,爲什麼需要熱更新的技術文章。本篇就專門針對UI框架的熱更新功能實現部分展開討論,討論的重點是熱更新如何與UI框架進行結合?
       現在筆者把設計“UI熱更新框架”的整體設計與構建過程表述如下,最後附帶源碼工程的下載鏈接,供廣大學員參考研究。如果大家有什麼不明白的地方,歡迎大家在評論區進行討論。
   
1:首先基於筆者以前設計的SUIFW 框架,做進一步功能完善。
   完善UI框架對於複雜窗體的直接轉向功能。爲了小夥伴們能夠更好的理解本技術,文章末尾特提供了下載鏈接供大家參考。

2:經過重構完善後UI框架與AB框架(即:AssetBundle 框架,本框架文章末尾提供源碼下載鏈接) 的初步資源、腳本整合處理。

   2.1> 建立一個全新的項目名稱例如:UIPlusABFramework。
   2.2> 項目中增加存放需要打包資源的目錄。 例如“AB_Resurces”目錄。
   2.3> Resources目錄原來的資源文件,除了配置文件外,全部拷貝到AB_Resources 目錄下。使用AB框架,對資源進行打包處理,加載到StreamingAssets 目錄下。

 

3:原始UI框架核心類(UIMangager.cs)的改動。
   3.1> 把原UI核心類底層加載機制 Resources.Load() 的單機職能,改爲以AB框架爲核心的AB包的調用加載機制。
具體說明:

                         ResourcesMgr.GetInstance().LoadAsset(strUIFormPaths, false);
       替換爲       AssetBundleMgr.GetInstance().LoadAssetBundlePack(xx,xx,xx,LoadAllABComplete){}                              

                         private void LoadAllABComplete(string abName){}

   3.2> 原本”Resources” 類需要的UI窗體路徑的(基於Json配置文件的)參數, 改爲了以AB框架中“場景名稱、包名稱、資源名稱”爲參數核心的機制。當然本部分也需要對核心配置文件"UIFormsConfigInfo.json" 做大的改動。(具體在第4節詳述)。

   3.3> 由於UIMangager.cs中,對於直接調用AB框架核心API,有很多不方便的地方。即需要寫很多代碼,且從UI與AB兩大框架解耦的思想出發,特設計一箇中間過渡腳本(例如: ABLoadAssetHelper.cs),利於兩大框架之間的低耦合處理。本設計過程參考經典設計模式中的“代理模式”、“橋接模式” 等思想。

   3.4> 以上兩大框架的結合與重構難點在於: 原始UI框架本質是“串行運行”,而AB框架資源調用是“並行運行”。 所以協調資源加載的先後順序是“熱更新UI框架”的重點與難點。

 

4: 原始UI框架核心類(UIMangager.cs)中對於Json配置文件的改動。
       原始配置文件"UIFormsConfigInfo.json" 以鍵值對的方式,存儲了UI窗體預設名稱與UI窗體預設在Resources目錄下的相對路徑的映射關係。但是在改造後的配置文件,所有的AB包都是默認加載到StreamingAssets 目錄下。
       所以其配置文件中的“值”,就改爲AB包的參數:“場景名稱、包名稱、資源名稱”。因爲有三個參數,可以定義在一行,中間加一個分隔符即可。在程序中可以做分割處理即可。詳細請讀者查看更新後定義的"UIFormsConfigInfo.json"配置文件。


5: 以上步驟開發完畢後,需要使用UI框架自帶的演示示例項目,做加載驗證測試。
        如果可以正確無誤的運行原UI框架所有的功能設計,則我們的“熱更新UI框架”,就算是初步重構完畢了。
當然這只是筆者設計的“熱更新框架設計之客戶端熱更框架”的一小部分,我們在下一篇中,會對國內部分遊戲公司所推崇的“純lua熱更新”框架進行介紹與設計講解,敬請期待。

 

附錄下載資料:

1: UI框架(SUIFW框架Ver1.1) 下載鏈接:
           鏈接:https://pan.baidu.com/s/1HU22Gr6GpWmT77vp4DcFZg
           提取碼:r4r7
   
2: AssetBundle 框架(ABFW)源碼工程下載鏈接:
           鏈接:https://pan.baidu.com/s/1VOoL9K3dUTpqxkwCcrQWYw
           提取碼:hla8

3:本文講解通過UI與AB框架整合,最終形成的“熱更新UI框架”( UIPlusABFramework)源碼下載鏈接:
       鏈接:https://pan.baidu.com/s/1C6e2ROHsqSaBEuCtRrzqpA
       提取碼:dfq6

 

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