首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UnityXlua热更新

什么是热更新,为什么要热更新?首先我们要先弄清楚这两个问题,众所周知,在游戏开发过程中,我们写的游戏不止有一个版本,因为做的游戏大部分是网络游戏,我们后期肯定会持续不断的更新新的内容,修改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的交互了。做到了这一步,热更新就有了基础了。然后就根据具体情况进行就可以了。好了这节就到这里了,需要源代码可以联系我。不喜勿喷哦。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191104A04COT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券