如果本文章對(duì)您有幫助,請(qǐng)不要吝嗇您的贊
解決的問題
- 更新頻繁,而IOS審核長
- IOS無法用DLL反射機(jī)制去做代碼更新
- 如果無熱更新,客戶端每次都需要重新下載一次安裝包领突。用戶體驗(yàn)不好
- 解決發(fā)布包的容量問題,一切都可以增量下載
原理
- 首先要清楚Unity的打包原理案怯,也就是AssetBundle的打包機(jī)制君旦,他會(huì)把prefab打包成.asset格式作為傳輸?shù)臄?shù)據(jù)。
- 通過校驗(yàn)文件的MD5值來判斷是否需要更新嘲碱,如果需要更新則下載差異文件金砍。
- lua屬于解釋性文件所以能通過www直接下載到本地,通過C#與lua交互麦锯,把邏輯寫在lua里恕稠,從而實(shí)現(xiàn)代碼熱更新。注意記得加密lua扶欣。
實(shí)現(xiàn)方案
- 這里我推薦LuaFramework 這個(gè)框架(下簡稱tolua)鹅巍,以上內(nèi)容他已經(jīng)完全封裝好,包括上述沒提到的CG的一些操作料祠。
- 我們只需要在tolua里面寫屬于自己模塊部分的邏輯就能簡單的實(shí)現(xiàn)熱更新骆捧。
Tolua學(xué)習(xí)
- ToLua的官方地址
- 國內(nèi)的資料不是太多,所以有什么疑問可以去官網(wǎng)或交流群查詢髓绽。
- 本篇文章使用的UGUI + tolua的 一個(gè)組合敛苇,Unity版本必須是5.x,因?yàn)閁nity5對(duì)于之前的版本的ab打包策略更改顺呕。
- Tolua的UI架構(gòu)是使用的puremvc枫攀,給我的感覺是把簡單的東西所復(fù)雜化,但是優(yōu)點(diǎn)在于把所復(fù)雜的邏輯解耦成機(jī)械操作株茶,其實(shí)對(duì)于成熟的項(xiàng)目來說来涨,我還是推薦不要舍棄mvc,當(dāng)然如果實(shí)在不喜忌卤,也是可以自己修改扫夜,或者寫插件便于開發(fā)。
例子的實(shí)現(xiàn)
1.先下載LuaFramework UGUI,我們的項(xiàng)目也是從這個(gè)項(xiàng)目所修改而來驰徊。
- 很多東西別人寫過的笤闯,我就不直接復(fù)制過來,而是給出鏈接棍厂,各位自行去看颗味。
2.LuaFramework目錄詳解
鏈接中的目錄是ulua的結(jié)構(gòu)目錄,其實(shí)這是一樣的牺弹,tolua核心的思想還是和ulua是沒差別的浦马。
3.找到Examples里面的,main.scene。
按照LuaFramework的基本用法 去進(jìn)行操作张漂,可以實(shí)現(xiàn)熱更新晶默。在打包的過程中,我們發(fā)現(xiàn)生成了StreamingAssets這個(gè)文件夾航攒,這是個(gè)可讀文件夾磺陡。在各個(gè)平臺(tái)都有對(duì)應(yīng)的目錄,所以之后所有的更新文件都會(huì)在這個(gè)目錄下漠畜,而我們所打包的文件也是通過更新StreamingAssets文件去實(shí)現(xiàn)更新迭代的币他。
題外話
詳解篇肯定不會(huì)少于三篇文章。
介紹憔狞,原理蝴悉,實(shí)戰(zhàn),我估摸著技術(shù)介紹文都是這樣的吧瘾敢。
但是事情比較多拍冠,時(shí)間很緊,這篇文章都是早上早會(huì)之后抽空寫完的簇抵。
只能說盡快完成吧庆杜。如果你喜歡這樣的技術(shù)分享。請(qǐng)?jiān)谙路近c(diǎn)贊讓我更有動(dòng)力正压!