1、什么是热更新?
在安卓、iOS平台,热更新表示在更新游戏资源或逻辑的时候不需要开发者将游戏再打包、上传、审核、发布、玩家重新下载安装包更新游戏,仅需要开发者打出新的ab(AssetBundle)资源文件放到网上,然后游戏程序下载新的ab资源文件替换本地的资源文件来实现游戏更新的流程。
热更代码是特殊的资源。
2、主流的代码热更方案有哪些?
lua(xLua、tolua、ulua)、C#(DLL、ILRuntime、LSharp)
iOS:IL2CPP,AOT(Ahead of Time,运行前编译)
安卓:Mono,JIT(Just in Time,动态(即时)编译)
DLL基于动态即时编译,只能在JIT模式下使用,即无法在iOS平台使用
lua有自己的虚拟机和运行时解释器,不受限于编译方式(IL2CPP、Mono)
ILRuntime和LSharp也有自己的虚拟机和运行时解译引擎,也不受限于编译方式
3、ILRuntime有什么优势?
https://ourpalm.github.io/ILRuntime/public/v1/guide/index.html
无缝访问C#工程的现成代码,无需额外抽象脚本API
直接使用VS2015进行开发,ILRuntime的解译引擎支持.Net 4.6编译的DLL
执行效率是L#的10-20倍
选择性的CLR绑定使跨域调用更快速,绑定后跨域调用的性能能达到slua的2倍左右(从脚本调用GameObject之类的接口)
支持跨域继承
完整的泛型支持
拥有Visual Studio的调试插件,可以实现真机源码级调试。支持Visual Studio 2015 Update3 以及Visual Studio 2017