热更新-----为何使用lua进行热更

  事实上我们在安卓端是可以使用c#jit的,但是我们在ios上的代码是AOT(预先编译,静态编译)的,不能用c# jit(实时编译,即时编译)。

  ios不能用c#热更是因为启动了CPU的No eXecute bit,简单说就是ios不允许更改代码,更新代码必须重新提安装包进行审核,AppStore审核过的代码才能执行。而lua解释器(通常来说就是lua.c中的代码)是审核过的,这才是为何lua可以运行在ios上的根本原因。lua在unity中作为一个文本资源来使用,当我们通过tolua或者xlua调用lua代码中某个函数时,解释器会去对lua进行解释,因为lua解释器代码允许执行,因此它会执行lua解释后的代码。

猜你喜欢

转载自www.cnblogs.com/zzp-950903/p/9891274.html