Unity 热更 C#(编译型语言) 和 lua(解释型语言) 比较

1.C#(编译型语言) 和 lua(解释型语言) 比较

在这里插入图片描述

2.热更新内容

热更新的内容包括代码和资源,代码有C#代码、lua代码,资源包括配置表、预设、音乐音效、动画、字体、图片、材质等等
在这里插入图片描述

3.C# 热更

Unity默认的开发语言是C#,我们写的C#代码最终会被编译成dll由Unity引擎来加载。所以可以把部分C#代码编译成一个独立的dll,上传到Web服务器,启动游戏时从服务器下载dll文件,在运行时重新加载dll,通过这种方式来达到热更新的目的,不过这种方式被视为是危险操作,因为鬼知道你重新加载的dll的代码里是不是病毒,如果你的项目上架了应用市场,使用这种dll的热更操作,大概率会被应用市场视为违规操作而下架。
在这里插入图片描述

4.Lua 热更

说到游戏的热更新,就不得不提lua,lua这门语言是运行时动态解释的,它没运行时就是一个普通的文本文件,我们可以把它看成是资源文件。所以lua代码热更和资源热更本质是一样的,一般都是打成AssetBundle放在Web服务器,客户端从Web服务器下载最新的AssetBundle到本地。

市面上的lua框架有很多,比如tolua、xlua、ulua、slua等等,本质都是在Unity环境里内嵌一个lua虚拟机(使用c语言实现的虚拟机),游戏运行时动态解析lua脚本并执行,所以我们就可以把一些逻辑用lua来实现,然后再通过Web服务器下载lua脚本(一般是lua源码做加密后再打成AssetBundle文件,或者是使用luac将lua源码编译成字节码然后再打成AssetBundle文件),从而实现热更的目的。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45136016/article/details/129448898