溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

客戶端熱更新框架之UI熱更框架設(shè)計(jì)(下)

發(fā)布時(shí)間:2020-02-29 01:24:05 來(lái)源:網(wǎng)絡(luò) 閱讀:427 作者:Liu_guozhu 欄目:游戲開(kāi)發(fā)

????上一篇筆者介紹了關(guān)于什么是熱更新,為什么需要熱更新的技術(shù)文章。本篇就專門針對(duì)UI框架的熱更新功能實(shí)現(xiàn)部分展開(kāi)討論,討論的重點(diǎn)是熱更新如何與UI框架進(jìn)行結(jié)合?
????現(xiàn)在筆者把設(shè)計(jì)“UI熱更新框架”的整體設(shè)計(jì)與構(gòu)建過(guò)程表述如下,最后附帶源碼工程的下載鏈接,供廣大學(xué)員參考研究。如果大家有什么不明白的地方,歡迎大家在評(píng)論區(qū)進(jìn)行討論。
? ?
1:首先基于筆者以前設(shè)計(jì)的SUIFW 框架,做進(jìn)一步功能完善。
???? 完善UI框架對(duì)于復(fù)雜窗體的直接轉(zhuǎn)向功能。為了小伙伴們能夠更好的理解本技術(shù),文章末尾特提供了下載鏈接供大家參考。

客戶端熱更新框架之UI熱更框架設(shè)計(jì)(下)


2:經(jīng)過(guò)重構(gòu)完善后UI框架與AB框架(即:AssetBundle 框架,本框架文章末尾提供×××鏈接) 的初步資源、腳本整合處理。
?? ????2.1> 建立一個(gè)全新的項(xiàng)目名稱例如:UIPlusABFramework。
?? ????2.2> 項(xiàng)目中增加存放需要打包資源的目錄。 例如“AB_Resurces”目錄。
?? ????2.3> Resources目錄原來(lái)的資源文件,除了配置文件外,全部拷貝到AB_Resources 目錄下。使用AB框架,對(duì)資源進(jìn)行打包處理,加載到StreamingAssets 目錄下。

3:原始UI框架核心類(UIMangager.cs)的改動(dòng)。
????? 3.1> 把原UI核心類底層加載機(jī)制 Resources.Load() 的單機(jī)職能,改為以AB框架為核心的AB包的調(diào)用加載機(jī)制。
具體說(shuō)明:
??????? ResourcesMgr.GetInstance().LoadAsset(strUIFormPaths, false);
?????? 替換為??????

?????? AssetBundleMgr.GetInstance().LoadAssetBundlePack(xx,xx,xx,LoadAllABComplete){}
??? ?? private void LoadAllABComplete(string abName){}

????? 3.2> 原本”Resources” 類需要的UI窗體路徑的(基于Json配置文件的)參數(shù), 改為了以AB框架中“場(chǎng)景名稱、包名稱、資源名稱”為參數(shù)核心的機(jī)制。當(dāng)然本部分也需要對(duì)核心配置文件"UIFormsConfigInfo.json" 做大的改動(dòng)。(具體在第4節(jié)詳述)。

????? 3.3> 由于UIMangager.cs中,對(duì)于直接調(diào)用AB框架核心API,有很多不方便的地方。即需要寫很多代碼,且從UI與AB兩大框架解耦的思想出發(fā),特設(shè)計(jì)一個(gè)中間過(guò)渡腳本(例如: ABLoadAssetHelper.cs),利于兩大框架之間的低耦合處理。本設(shè)計(jì)過(guò)程參考經(jīng)典設(shè)計(jì)模式中的“代理模式”、“橋接模式” 等思想。

???? 3.4> 以上兩大框架的結(jié)合與重構(gòu)難點(diǎn)在于: 原始UI框架本質(zhì)是“串行運(yùn)行”,而AB框架資源調(diào)用是“并行運(yùn)行”。 所以協(xié)調(diào)資源加載的先后順序是“熱更新UI框架”的重點(diǎn)與難點(diǎn)。

4: 原始UI框架核心類(UIMangager.cs)中對(duì)于Json配置文件的改動(dòng)。
??????? 原始配置文件"UIFormsConfigInfo.json" 以鍵值對(duì)的方式,存儲(chǔ)了UI窗體預(yù)設(shè)名稱與UI窗體預(yù)設(shè)在Resources目錄下的相對(duì)路徑的映射關(guān)系。但是在改造后的配置文件,所有的AB包都是默認(rèn)加載到StreamingAssets 目錄下。
??? ????所以其配置文件中的“值”,就改為AB包的參數(shù):“場(chǎng)景名稱、包名稱、資源名稱”。因?yàn)橛腥齻€(gè)參數(shù),可以定義在一行,中間加一個(gè)分隔符即可。在程序中可以做分割處理即可。詳細(xì)請(qǐng)讀者查看更新后定義的"UIFormsConfigInfo.json"配置文件。


5: 以上步驟開(kāi)發(fā)完畢后,需要使用UI框架自帶的演示示例項(xiàng)目,做加載驗(yàn)證測(cè)試。
????????如果可以正確無(wú)誤的運(yùn)行原UI框架所有的功能設(shè)計(jì),則我們的“熱更新UI框架”,就算是初步重構(gòu)完畢了。
當(dāng)然這只是筆者設(shè)計(jì)的“熱更新框架設(shè)計(jì)之客戶端熱更框架”的一小部分,我們?cè)谙乱黄?,?huì)對(duì)國(guó)內(nèi)部分游戲公司所推崇的“純lua熱更新”框架進(jìn)行介紹與設(shè)計(jì)講解,敬請(qǐng)期待。


附錄:


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

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



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI