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

一些关于Xlua热更新的话

[复制链接]
发表于 2022-8-15 16:43 | 显示全部楼层 |阅读模式
什么是热更新,为什么要热更新?首先我们要先弄清楚这两个问题,众所周知,在游戏开发过程中,我们写的游戏不止有一个版本,因为做的游戏大部分是网络游戏,我们后期肯定会持续不断的更新新的内容,修改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-11-25 07:16 , Processed in 0.094458 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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