xLua(一)——介绍

一:什么是热更新?

热更新是指当游戏出现bug,或者需要修改,增加某个功能的时候,我们不需要重新下载安装包,就可以更新游戏内容。
游戏上线后,遇见bug或者需要更新内容,一般有两种做法。第一种,发个新包,然后发布到应用商店(需要审核,费时间),然后让玩家下载新的客户端版本(需要重新下载,费流量),第二种,在游戏内更新,游戏启动时去下载需要更新的资源。第一种我们一般称为游戏大版本更新,第二种称为热更新。
例如一个用Unity制作的游戏,脚本是用C#编写的,现在游戏中有一个地方的数值需要修改,也许只有几KB,但是因为是用的C#语言(必须重新编译为dll文件才可以,不能在移动平台直接替换)所以必须重新打成包发布,显然重新发布下载安装很没有意义,但是如果是用Lua语言编写的,则可以在移动端直接替换,不需要重新编译。


二:热更新方案

大部分的热更新实现都基于Lua这个语言,之前介绍过,因为Lua轻量小巧,跨平台,易扩展,最重要的是用Lua编写的脚本修改后可以在移动端直接替换运行,不像C#需要重新编译。
Lua介绍:https://blog.csdn.net/LLLLL__/article/details/88790633

1.ILRuntime:
是掌趣科技开源的unity热更框架, 这个框架打破了C#不能做ios平台热更的规则,在ios平台中是以ILRuntime + DLL 的方式解释执行,当然是在IL2CPP下。有了这个框架,开发者只需使用C#这一种语言即可,而不用在C#和lua之间切换,但这个框架也是有很多坑的,在一些方面性能是不如lua的,Git上的贡献者也很少,暂时没有经过大量项目的考验,用的人还是比较少的。
2.C#Light:
是框架作者开发的一种小巧的脚本语言,能在各个平台实现热更新,但该框架早已停止维护。
3.利用C#的反射:
这种方式只支持windows以及安卓这种支持JIT的平台,对于IOS就不适用了,IOS这种Full-AOT的平台不支持生成新的代码,因此这种热更方式很少用到。
4.uLua:
是Lua的第一款插件,但是现在已经停止更新,退出主流。
5.sLua:
代码质量好(比toLua代码更清晰),但是性能低于toLua。
6.toLua:
uLua停止更新后出现的新的热更新插件,基于toLua作者开发了一款luaframework,目前比较主流。
7.xLua:
腾讯开发的Lua,目前比较主流。


三:xLua

xLua为Unity,.Net,Mono等C#环境增加Lua脚本编程的能力,借助xLua可以使lua代码与C#相互调用。

猜你喜欢

转载自blog.csdn.net/LLLLL__/article/details/89296680