找回密码
 立即注册
查看: 240|回复: 0

一些关于 Xlua热更新 的见解

[复制链接]
发表于 2023-9-7 11:08 | 显示全部楼层 |阅读模式
什么是热更新,为什么要热更新?
首先我们要先弄清楚这两个问题,众所周知,在游戏开发过程中,我们写的游戏不止有一个版本,因为做的游戏大部门是网络游戏,我们后期必定会持续不竭的更新新的内容,改削BUG,做活动等。一般情况下,我们已经发布了一个版本,后期的版本做出来后,如果要把之前的版本删掉,然后再下载新的版本的话,这无疑长短常糟糕的,因为这样会流掉大量的用户,如果每次更新版本都需要从头下载新的大安装包的话。即使你的游戏再好玩,谁也没有那么多的耐心。所以我们必需要有法子,既能快速更新内容,同时不用把之前的东西推到重来,需要什么就更新什么。那么热更新就能做到。
在Unity中热更新有两种,要么用C#light来做,但是它的效果似乎不是很好。还有一种就是lua,可以是Xlua,tolua,等,此刻用的最多的还是Xlua,这是腾讯开源的插件,我们可以直接用,从Github下载下来就可以用了。今天我们也是基于Xlua来做的。好了,先来看看效果。


这是一个简单的Xlua的案例,就是通过Xlua插件,然后让C#和lua交互。主逻辑都是在lua里面写的。那么我们来看看怎么做出来吧。
首先我们需要导入Xlua,这个没什么好说的。下载导入即可。然后我们就先来一个启动节点。然后挂载上luabehaviour脚本。然后创建一个text,在这里面写lua代码就可以了。它是这个样子的:


在这个脚本里,我们有一个lua虚拟机,然后我们就需要装载我们的lua代码块,就在scriptEnv里面。这个环境表里面都是我们要用的。通过这个环境表,把我们写的一些变量set进去。就可以用起来了。如果是方式的话,就Get,比如start函数,我们从环境表中得到。然后在lua里面写对应的方式即可。再看看lua的代码块。


这是lua调用C#的方式,如果是函数的话,就用“:”,如果是变量的话,我们就用“.”。Self是我们在luabehaviour里面设置的变量,暗示当前游戏物体。所以旋转的函数调用就是:self.transform:Rotate(0, 36 * CS.UnityEngine.Time.deltaTime, 0)。当然如果你还有其他的变量需要添加或者函数需要添加,我们都可以在luabehaviour里面加。比如:





这样的话,我们就完成了C#和lua的交互了。做到了这一步,热更新就有了基础了。然后就按照具体情况进行就可以了。好了这节就到这里了,需要源代码可以联系我。
诚心邀请大师点击插手我的游戏开发交流小组 →学习交流小组

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-29 05:25 , Processed in 0.117424 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表