游戲熱更新之Lua腳本組件掛載(Unity-XLua)


? ? ? 游戲,當(dāng)然要熱更哦,否則資源程序變動(dòng)時(shí),重新下載安裝包,費(fèi)時(shí)費(fèi)事,用戶流量流失。當(dāng)然我們Unity開發(fā)引擎來(lái)講解,用的是騰訊的XLua,在這要感謝一下騰訊做出的貢獻(xiàn)。話不多說,開始擼代碼。

? ? ? ?熱更新,我們更的是資源,和邏輯代碼,所以有了所謂的資源熱更,代碼熱更。資源的話,我們一般會(huì)打成ab包,放在服務(wù)器,更新下來(lái),這一塊在我的文章MD5校驗(yàn)和資源代碼熱更有講到,可以去看一下。但代碼熱更,我們就會(huì)用到lua去開發(fā)邏輯代碼,那么Lua腳本怎么執(zhí)行呢!成為阻力,給大家講解一下。我們Unity中,可以執(zhí)行理解為執(zhí)行的都是組件,C#代碼可以當(dāng)成組件,掛載在物體上,我們就以這個(gè)為思路,我們把Lua腳本也當(dāng)成一個(gè)組件,AddComponent加載到物體上,Lua腳本是無(wú)法這樣掛載到物體上的,這時(shí)我們就需要一個(gè)中介,事先寫好的通用組件C#代碼來(lái)連接我們的Lua腳本,接下來(lái)看代碼

?? ? ?我們建一個(gè)LuaComponent.CS的腳本,如下

我們能用到的函數(shù)模板聲明,如luaStart 相當(dāng)于我們C#中的Start.


這個(gè)方法,看到了GameObject,LuaTable,把聲明的lua腳本加載到物體上

初始化lua函數(shù)模板

C#函數(shù)和lua函數(shù)映射。

這個(gè)通用中介腳本寫好了,先放一下,接下來(lái),我們寫一個(gè)lua邏輯腳本,比如登錄界面

里面的方法邏輯如Awake方法,我們聲明我們的UI

注意注意,講解一下,這里的Awake,Start,等系統(tǒng)方法函數(shù)是和我們LuaComponent.cs

這個(gè)方法對(duì)應(yīng)著的。

還有一個(gè)非常重要的就是邏輯代碼里要有

加入原表

到此為止,我們的邏輯代碼也有了,組件代碼也有了,關(guān)聯(lián)也知道了,怎么運(yùn)行呢

簡(jiǎn)單呀,我們寫一個(gè)Lua腳本配置類,XLua里我們可以把他設(shè)置為程序入口(相關(guān)可以去GitHub上學(xué)習(xí)一下

,此文章不做講解,下次文章講解這一塊)

Lua配置類LuaToCsConfig.lua

我們首先判斷是否為當(dāng)前場(chǎng)景,如

如果是當(dāng)前場(chǎng)景,我們找到我們要添加腳本的物體,當(dāng)然我們也可以直接在此物體上掛上LuaComponet.cs腳本,

比如LoginPanel這個(gè)Gameobject,如果為空的話我們就創(chuàng)建這個(gè)物體,然后我們?cè)谶@個(gè)物體上加載上我們的登錄Lua腳本LoginView

好了,這樣邏輯代碼我們就可以用lua寫了,當(dāng)添加功能或者修改lua腳本,只需要把修改的放在服務(wù)器上,與本地的通過md5校驗(yàn),就可以實(shí)現(xiàn)熱更新了。

我的一句話:喜歡的話,點(diǎn)個(gè)贊點(diǎn)喜歡點(diǎn)關(guān)注,看相關(guān)成套文章,持續(xù)更新,有幫助的話,賞1毛哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,256評(píng)論 0 38
  • 0. 前言 2016年8月從網(wǎng)易“畢業(yè)”,在新的公司開始新的工作,這其中的波折與故事暫時(shí)不提,等以后有時(shí)間的時(shí)候再...
    董夕閱讀 4,258評(píng)論 8 40
  • 以前每次要東西,會(huì)有三種結(jié)果:給、不給、艱難的談判。 現(xiàn)有有了自己的電子儲(chǔ)蓄罐,多了第四種簡(jiǎn)單高效的方法:可以,但...
    邢大俠閱讀 280評(píng)論 0 0
  • 茶之美,美在名。 中國(guó)茶喜歡以地名加特色命名,大多如此。 而我國(guó)地大物博,江山秀美,自古名山出好茶。 比如“黃山歸...
    茶人老七閱讀 227評(píng)論 0 0
  • 今天推薦一本書:《這樣讀書就夠了》。很明顯,這是一本講怎么讀書的書。幾年前,就讀過了,昨天偶然間又翻到讀了幾十頁(yè),...
    龔振江閱讀 537評(píng)論 0 4

友情鏈接更多精彩內(nèi)容