UnityXlua熱更新

什么是熱更新,為什么要熱更新?首先我們要先弄清楚這兩個問題,眾所周知,在游戲開發(fā)過程中,我們寫的游戲不止有一個版本,因?yàn)樽龅挠螒虼蟛糠质蔷W(wǎng)絡(luò)游戲,我們后期肯定會持續(xù)不斷的更新新的內(nèi)容,修改BUG,做活動等。一般情況下,我們已經(jīng)發(fā)布了一個版本,后期的版本做出來后,如果要把之前的版本刪掉,然后再下載新的版本的話,這無疑是非常糟糕的,因?yàn)檫@樣會流失大量的用戶,如果每次更新版本都需要重新下載新的大安裝包的話。即使你的游戲再好玩,誰也沒有那么多的耐心。所以我們必須要有辦法,既能快速更新內(nèi)容,同時不用把之前的東西推到重來,需要什么就更新什么。那么熱更新就能做到。

在Unity中熱更新有兩種,要么用C#light來做,但是它的效果似乎不是很好。還有一種就是lua,可以是Xlua,tolua,等,現(xiàn)在用的最多的還是Xlua,這是騰訊開源的插件,我們可以直接用,從Github下載下來就可以用了。今天我們也是基于Xlua來做的。好了,先來看看效果。


這是一個簡單的Xlua的案例,就是通過Xlua插件,然后讓C#和lua交互。主邏輯都是在lua里面寫的。那么我們來看看怎么做出來吧。

首先我們需要導(dǎo)入Xlua,這個沒什么好說的。下載導(dǎo)入即可。然后我們就先來一個啟動節(jié)點(diǎn)。然后掛載上luabehaviour腳本。然后創(chuàng)建一個text,在這里面寫lua代碼就可以了。它是這個樣子的:


在這個腳本里,我們有一個lua虛擬機(jī),然后我們就需要裝載我們的lua代碼塊,就在scriptEnv里面。這個環(huán)境表里面都是我們要用的。通過這個環(huán)境表,把我們寫的一些變量set進(jìn)去。就可以用起來了。如果是方法的話,就Get,比如start函數(shù),我們從環(huán)境表中得到。然后在lua里面寫對應(yīng)的方法即可。再看看lua的代碼塊。


這是lua調(diào)用C#的方法,如果是函數(shù)的話,就用“:”,如果是變量的話,我們就用“.”。Self是我們在luabehaviour里面設(shè)置的變量,表示當(dāng)前游戲物體。所以旋轉(zhuǎn)的函數(shù)調(diào)用就是:self.transform:Rotate(0, 36 * CS.UnityEngine.Time.deltaTime, 0)。當(dāng)然如果你還有其他的變量需要添加或者函數(shù)需要添加,我們都可以在luabehaviour里面加。比如:



這樣的話,我們就完成了C#和lua的交互了。做到了這一步,熱更新就有了基礎(chǔ)了。然后就根據(jù)具體情況進(jìn)行就可以了。好了這節(jié)就到這里了,需要源代碼可以點(diǎn)擊下面鏈接加群領(lǐng)取
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??加群鏈接

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

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

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