1.利用反射來做Dll更新
這種方式只支持windows以及安卓這種支持JIT的平台,對於IOS就不適用了,IOS這種Full-AOT的平台不支持生成新的代碼,因此這種熱更方式很少用到。
2.利用lua來做更新
目前這種更新方式是主流,適用於所有平台,lua作為腳本語言,無須編譯就能在各個平台運行,常用的lua熱更框架有ulua、tolua、xlua、slua、cs2lua等,其中ulua作為開山鼻祖,早已停止更新,逐漸退出主流,最常用的應該還是xlua以及tolua,xlua不僅支持純lua熱更,還支持HotFix,平時開發用C#,出bug了就用lua替換,這種方式收到了廣大開發者的歡迎,而且xlua有騰訊來維護,不用擔心以后版本升級的問題,tolua作為ulua的繼承者,也被廣泛應用。cs2lua則是開發時使用C#,開發完就將C#代碼轉換成lua,這樣一套游戲就有了C#和Lua兩個版本。
3.ILRuntime
ILRuntime是掌趣科技開源的unity熱更框架, 這個框架打破了C#不能做ios平台熱更的規則,在ios平台中是以ILRuntime + DLL 的方式解釋執行,當然是在IL2CPP下。有了這個框架,開發者只需使用C#這一種語言即可,而不用在C#和lua之間切換,但這個框架也是有很多坑的,在一些方面性能是不如lua的,Git上的貢獻者也很少,暫時沒有經過大量項目的考驗,用的人還是比較少的。
4.C#Light
C#Light是框架作者開發的一種小巧的腳本語言,能在各個平台實現熱更,但該框架早已停止維護,這種熱更方式也已經淡出視野。
5.JSBinding+SharpKit
JSBinding + SharpKit 這種熱更技術,他做了兩件事情:
- JSBinding將C#導出到 JavaScript 中,讓你可以用 JavaScript 寫代碼,就好像 lua 一樣
- SharpKit將C#代碼翻譯成 JavaScript 代碼。
因此,他可以
讓你使用C#編譯代碼,之后一鍵轉換成 JavaScript 代碼並正常運行。使用這個方案,可以同時擁有 C# 版本和 JavaScript 版本的游戲。