C#与Lua
C#
只能在特定的操作系统中进行编译成dll文件,然后打包到安装包,从而在其他的平台运行
在移动平台上不能更新替换已有的dll文件,除非重新下载安装包
Lua
是一种轻量小巧的脚本语言,不需要编译,可以直接用
可以在所有的操作系统和平台上编译运行,可以很方便的更新代码,更新代码后,可以直接在手机上运行,不需要重新安装安装包
Ulua
一款unity插件,它能让unity支持Lua语言
1、什么是热更新?
Lua代码都是运行时才编译的,不运行的时候是文件;所以更新逻辑只需要更新脚本(文件),不需要再编译,因而Lua能轻松实现“热更新”
。游戏上线后,在运营过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载,就会浪费流量,体验不好。
出于对游戏性能的考虑,尽量少的低频率的调用Lua,比如尽量少在Update函数中调用Lua、循环利用已经实例化过的LuaState避免浪费资源。对于那些不需要高效运算的模块,比如UI部分,就可以放心大胆的使用Lua。
热更新可以在不重新下载客户端的情况下,更新游戏内容。
2、为什么C#脚本不可以直接更新?
C#运行之前需要先编译,这个过程在手机上是无法完成的,所以当我们游戏的逻辑更改时,C#代码发生改变的时候,我们就需要重新发布新版本。这对于手游来说体验是不好的。
3、热更新有哪些实现方式?
使用Lua脚本编写游戏的UI或者其他逻辑。(调用C#里面的方法来进行)
4、什么是AssetBundle?
Unity提供的一种资源更新技术,就是通过AssetBundle更新UI,也可以通过把脚本或者其他代码当成资源打包成AssetBundle然后更新到客户端。
5、如何利用Lua进行热更新?
在移动端通过ULua编写Lua解析器,通过这个解析器可以运行最新的Lua脚本,然后我们把控制游戏逻辑的代码写成Lua脚本。