cong-rongzheng

热更新:服务器不停服的前提下,实现补丁的安装,直接进入游戏,无需重新下载客户端安装包

更新流程:

非热更:等待下载->下载客户端->安装->启动->解压加载->进入游戏(需要重新下载客户端)

热更:启动->下载热更补丁->等待加载->进入游戏

 

问题来了,为什么要用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:程序运行前,将所有源码编译成目标平台的原生码

分类:

技术点:

相关文章: