unity---游戏中的Xlua热更新

作者: Thomas游戏圈 | 来源:发表于2019-11-05 16:28 被阅读0次

    什么是热更新,为什么要热更新?首先我们要先弄清楚这两个问题,众所周知,在游戏开发过程中,我们写的游戏不止有一个版本,因为做的游戏大部分是网络游戏,我们后期肯定会持续不断的更新新的内容,修改BUG,做活动等。一般情况下,我们已经发布了一个版本,后期的版本做出来后,如果要把之前的版本删掉,然后再下载新的版本的话,这无疑是非常糟糕的,因为这样会流失大量的用户,如果每次更新版本都需要重新下载新的大安装包的话。即使你的游戏再好玩,谁也没有那么多的耐心。所以我们必须要有办法,既能快速更新内容,同时不用把之前的东西推到重来,需要什么就更新什么。那么热更新就能做到。

    在Unity中热更新有两种,要么用C#light来做,但是它的效果似乎不是很好。还有一种就是lua,可以是Xlua,tolua,等,现在用的最多的还是Xlua,这是腾讯开源的插件,我们可以直接用,从Github下载下来就可以用了。今天我们也是基于Xlua来做的。好了,先来看看效果。

    这是一个简单的Xlua的案例,就是通过Xlua插件,然后让C#和lua交互。主逻辑都是在lua里面写的。那么我们来看看怎么做出来吧。

    首先我们需要导入Xlua,这个没什么好说的。下载导入即可。然后我们就先来一个启动节点。然后挂载上luabehaviour脚本。然后创建一个text,在这里面写lua代码就可以了。它是这个样子的:

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

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

    这样的话,我们就完成了C#和lua的交互了。做到了这一步,热更新就有了基础了。然后就根据具体情况进行就可以了。好了这节就到这里了,需要源代码可以联系我。不喜勿喷哦。点击链接加入群聊【Unity/Cocos交流群】

    相关文章

      网友评论

        本文标题:unity---游戏中的Xlua热更新

        本文链接:https://www.haomeiwen.com/subject/bchebctx.html