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 这种热更技术,他做了两件事情:
  1. JSBinding将C#导出到 JavaScript 中,让你可以用 JavaScript 写代码,就好像 lua 一样
  2. SharpKit将C#代码翻译成 JavaScript 代码。
因此,他可以让你使用C#编译代码,之后一键转换成 JavaScript 代码并正常运行。使用这个方案,可以同时拥有 C# 版本和 JavaScript 版本的游戏。
05-06 23:24