热更原理
一、热更是什么,为什么需要热更?在要求更新性很强的游戏运营或者App里,热更是一个很重要的功能,因为有了热更,在App有变化了之后,不需要用户重新安装一次App,重新下载安装对用户体验来说非常不友好,而是在App内部就进行了更新,另外重新提交新的安装包,在苹果AppStore的流程会比较长,对于运营维护来说非常不便。通过用户在首次启动游戏或者App后,App自动去服务器端加载最新的资源和代码,这个过程就叫热更新。
二、资源热更
1、在一般的移动端,不管是安卓还是IOS,会有一个App的数据目录,这个目录通常是只读而不允许外部做更改的,但是可以通过App本身去进行一个更改。因此需要一个额外的一个本地数据目录,用来接收服务器端最新的资源,然后需要在App首次启动的时候,把本地数据目录最新的资源拷贝到App的数据目录,即可完成了资源的更新,其中lua作为一种文本型文件,实质也是资源的一种。但是代码通常情况下需要编译后才能运行的,这就需要引入一种不需要编译就能运行的新语言,就是Lua。
三、代码热更
代码要求能热更必备的两个特性:
1、C#需要编译,Lua是解释性的弱语言,不需要提前编译,而是在lua虚拟机里执行的时候进行解释。
2、unity本身并不支持Lua语言,这时候就需要提供一个将Lua语言翻译成C#语言的机制。目前不管是ToLua还是xLua,都是需要将Unity的C#语言接口,通过反射或类似的翻译方式,生成了lua端的接口,这样子就实现了lua访问unity的功能。
最后,这样就实现了代码逻辑的热更。
页:
[1]