Lua热更新步骤
Lua热更新的三种方式
第一种
使用全Lua进行Unity游戏项目的开发,不过不推荐,因为Lua性能不好,Lua调用C#是通过反射调用,频繁调用就会造成较大的性能开销;举例:transform.position = pos;这部分代码就在频繁的调用取值、入栈、C#到Lua类型转换;
第二种
半C#半Lua开发,C#负责项目主要逻辑,Lua只负责UI这部分的功能实现,推荐,这样的话性能消耗就没那么大了;
第三种
项目结束后,才给出的新需求,说项目要加个热更新的功能,这时候总不能把项目推翻重做吧;这个时候就是第三种方式,打热补丁;在原有项目的基础上改动,把需要热更新的部分在Lua重写,再打上热补丁 “Hotfixx” ,注入到项目中;不过这种方式也不推荐,只建议在项目完成后,才有的需求, 不然项目越来越大,就会出现性能的问题。
热更新
热更新简单点来说,就是:无非对比一下版号,下载到可读可写目录下,优先读这个目录;
详细点的话就是:
1、第一步,从服务器下载资源对比文件;
这个文件里面有很多ab包信息,里面包含的信息有ab包名、ab包大小、ab包的MD5码等等。
2、第二步,把下载下来的远端资源对比文件和本地资源对比文件进行比较;
如果 本地资源对比文件里面 没有 远端资源对比文件 没有的ab包,则存入下载列表,
如果有相同名字的AB包文件,并且MD5码一致,则不用处理
如果有相同名字的AB包文件,但是MD5码不同,则也存入下载列表,
如果 本地资源对比文件 里有 远端资源对比文件里 没有的ab包 则进行删除。
3、第三步,把下载列表中的ab包下载到可读可写文件夹下,并且把本地资源对比文件删除,把远程资源对比文件下载下来,热更新就结束了