找回密碼
 注冊帳號

掃一掃,訪問微社區

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

10
回復
1977
查看
打印 上一主題 下一主題
[ 復制鏈接 ]

21

主題

107

帖子

910

積分

Rank: 9Rank: 9Rank: 9

UID
34511
好友
42
蠻牛幣
1391
威望
0
注冊時間
2014-7-15
在線時間
474 小時
最后登錄
2019-8-10

專欄作家

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

x
本帖最后由 liu_guozhu 于 2019-5-9 10:56 編輯

       上一篇筆者介紹了關于什么是熱更新,為什么需要熱更新的技術文章。本篇就專門針對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

3: AssetBundle 框架(ABFW)源碼工程下載鏈接:
           鏈接:https://pan.baidu.com/s/1VOoL9K3dUTpqxkwCcrQWYw
           提取碼:hla8

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



參與人數 1鮮花 +4 收起 理由
泗陽該歇大鍋 + 4

查看全部評分總評分 : 鮮花 +4

回復

使用道具 舉報

5熟悉之中
828/1000
排名
2816
昨日變化

0

主題

58

帖子

828

積分

Rank: 5Rank: 5

UID
145522
好友
0
蠻牛幣
867
威望
0
注冊時間
2016-4-14
在線時間
250 小時
最后登錄
2019-7-26
沙發
2019-5-9 13:13:00 只看該作者

回帖獎勵 +1

劉老師棒棒噠
回復

使用道具 舉報

3偶爾光臨
191/300
排名
24128
昨日變化

1

主題

94

帖子

191

積分

Rank: 3Rank: 3Rank: 3

UID
162579
好友
0
蠻牛幣
36
威望
0
注冊時間
2016-8-16
在線時間
78 小時
最后登錄
2019-8-11
板凳
2019-5-9 14:08:20 只看該作者
學習了,真是難得,免費開講,資源還免費下
回復 支持 反對

使用道具 舉報

5熟悉之中
508/1000
排名
6127
昨日變化

8

主題

105

帖子

508

積分

Rank: 5Rank: 5

UID
147112
好友
0
蠻牛幣
601
威望
0
注冊時間
2016-4-29
在線時間
171 小時
最后登錄
2019-7-29
地板
2019-5-9 15:44:09 只看該作者
感謝劉老師,免費案例,免費資源
回復 支持 反對

使用道具 舉報

4四處流浪
408/500
排名
7087
昨日變化

0

主題

112

帖子

408

積分

Rank: 4

UID
217314
好友
0
蠻牛幣
827
威望
0
注冊時間
2017-4-12
在線時間
112 小時
最后登錄
2019-8-9
5#
2019-5-9 18:11:34 只看該作者
劉老師棒棒噠
回復

使用道具 舉報

4四處流浪
380/500
排名
16594
昨日變化

1

主題

133

帖子

380

積分

Rank: 4

UID
281418
好友
0
蠻牛幣
520
威望
0
注冊時間
2018-5-16
在線時間
204 小時
最后登錄
2019-8-12
6#
2019-5-11 09:51:04 只看該作者
謝謝                     
回復 支持 反對

使用道具 舉報

0

主題

2

帖子

2

積分

Rank: 1

UID
321907
好友
0
蠻牛幣
0
威望
0
注冊時間
2019-5-12
在線時間
0 小時
最后登錄
2019-5-12
7#
2019-5-12 21:52:56 只看該作者
多謝樓主分享
回復

使用道具 舉報

5熟悉之中
910/1000
排名
3560
昨日變化

9

主題

191

帖子

910

積分

Rank: 5Rank: 5

UID
162410
好友
0
蠻牛幣
2828
威望
0
注冊時間
2016-8-15
在線時間
290 小時
最后登錄
2019-7-19
8#
2019-5-14 14:51:51 只看該作者
謝謝 劉老師
回復

使用道具 舉報

6蠻牛粉絲
1060/1500
排名
10818
昨日變化

3

主題

790

帖子

1060

積分

Rank: 6Rank: 6Rank: 6

UID
310426
好友
0
蠻牛幣
1399
威望
0
注冊時間
2019-1-2
在線時間
171 小時
最后登錄
2019-8-12
9#
2019-5-20 08:49:50 只看該作者
太贊了
回復

使用道具 舉報

7日久生情
1711/5000
排名
832
昨日變化

2

主題

153

帖子

1711

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
5714
好友
0
蠻牛幣
3284
威望
0
注冊時間
2013-10-15
在線時間
374 小時
最后登錄
2019-8-12
10#
2019-5-23 08:55:22 只看該作者
感謝分享
回復

使用道具 舉報

0

主題

7

帖子

7

積分

Rank: 1

UID
323611
好友
0
蠻牛幣
3
威望
0
注冊時間
2019-5-31
在線時間
0 小時
最后登錄
2019-5-31
11#
2019-5-31 17:00:43 只看該作者
xuexue1111111111111111
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

女校游泳队彩金