1. 程式人生 > 其它 >【xLua熱更新 一】什麼是熱更新

【xLua熱更新 一】什麼是熱更新

熱更新:伺服器不停服的前提下,實現補丁的安裝,直接進入遊戲,無需重新下載客戶端安裝包

更新流程:

非熱更:等待下載->下載客戶端->安裝->啟動->解壓載入->進入遊戲(需要重新下載客戶端)

熱更:啟動->下載熱更補丁->等待載入->進入遊戲

問題來了,為什麼要用Lua熱更,基於Unity對C#的友好性,直接用C#熱更豈不是更好?

Lua是解釋性語言,不用編譯,在執行時能動態解釋Lua程式碼並執行;C#編譯性語言,執行前需要提前編譯完成

但是,並不是完全因為這個原因才選擇Lua進行熱更,C#也可以熱更,對DLL進行熱更就可以了。

根本原因在於IOS不能獲取具有執行許可權的記憶體空間,也就是要求JIT按照full-AOT模式,這樣對於C#、C++就失去了動態編譯的能力。

常見的熱更方式:toLua,xLua,sLua,ILRuntime等等,可以自行查一下ILRuntime的實現方式

名詞解釋:

JIT(Just In Time):即時編譯,在執行過程中,將CIL轉成目標平臺的原生碼。

IL(Intermediate Language):介於源語言和目標語言的中間語言

CIL(Common Intermediate Language):通用中間語言

AOT(Ahead-of-time):執行前編譯

Full-AOT:程式執行前,將所有原始碼編譯成目標平臺的原生碼