【xLua熱更新 一】什麼是熱更新
阿新 • • 發佈:2021-11-02
熱更新:伺服器不停服的前提下,實現補丁的安裝,直接進入遊戲,無需重新下載客戶端安裝包
更新流程:
非熱更:等待下載->下載客戶端->安裝->啟動->解壓載入->進入遊戲(需要重新下載客戶端)
熱更:啟動->下載熱更補丁->等待載入->進入遊戲
問題來了,為什麼要用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:程式執行前,將所有原始碼編譯成目標平臺的原生碼