您好,登錄后才能下訂單哦!
????上一篇筆者介紹了關于什么是熱更新,為什么需要熱更新的技術文章。本篇就專門針對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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。