XLua开发环境搭建

前言

xlua是腾讯给出的热更新方案,已经有很多成功的案例了,这里把xlua工程下载过来,成功执行到hello world表示对xlua环境搭建成功,毕竟学习一门技术或语言都是从hello world开始的,虽然环境搭建下载过来即可,没有任何的坑。

1.下载Xlua工程

到这里对xlua进行下载,建议选择xlua_lua5.3 or Higher版本的工程,以后所有关于xlua热更新方案都使用lua5.3 or Higher版本的解释器,不会去使用luajit解释器,后面会出一篇文章来对比说明lua5.3和luajit区别,这里就不过多解释了,跳转到github下载第一个压缩包即可,具体如图所示:

exp1

解压缩以后,只需要2个文件夹,Plugins和XLua,直接到这2个文件夹拖到Unity工程下,到这里XLua的开发环境其实就算是搭建好了,Unity工程目录图如下:

exp2

2.执行hello world

xlua目录下有Examples子文件夹,首个demo就是hello_world的运行,具体代码如下:

namespace XLuaTest
{
    public class Helloworld : MonoBehaviour
    {
        // Use this for initialization
        void Start()
        {
            LuaEnv luaenv = new LuaEnv();
            luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
            luaenv.Dispose();
        }
    }
}

luaenv建议使用全局静态,避免频繁创建和释放,写成这样的hello world是不能热更新,虽然hello world的打印是通过lua调用c#出现的,接下来实现一个可热更新的hello world,所谓的热更新其实就是创建lua脚本文件,需要热更新时通过远程下载替换lua脚本文件即可,这里就在XLua/Resources创建一个名字叫hello_world.lua.txt,里面的具体代码如下:

hello_world = {}
local this = hello_world

local str = 'hello world'

function this.PrintHelloWorld()
     print(str)	
end

this.PrintHelloWorld()

学习过lua语言都知道它没有class的概念,所以实现类似class编程时,都可以通过lua的table去模拟,包括类继承等等,并且这样更好的防止变量名的冲突,也可以起到c#的namespace作用,算是奇技吧。然后修改一下c#中hello world的代码,具体代码如下:

namespace XLuaTest
{
    public class Helloworld : MonoBehaviour
    {
        // Use this for initialization
        void Start()
        {
            LuaEnv luaenv = new LuaEnv();
            luaenv.DoString("require 'hello_world'");
            luaenv.Dispose();
        }
    }
}

真实游戏项目应该把require相关代码全部放到单个lua脚本里,然后Unity工程只需要require这个lua脚本即可。原因很简单,如果有天新增加的lua脚本,写在C#里的require代码已经不能热更新,只能替换游戏的客户端,而写到单个lua脚本里可以做到热更新。

3.解决小疑问

  • .lua.txt和.lua后缀的区别?

其实什么后缀都可以,如果想以TextAsset打包到安装包(比如放到Resources目录),Unity不认lua后缀,这是Unity的规则。如果不打包到安装包,就没有后缀的限制:比如自行下载到某个目录(这也是热更的正确姿势),然后通过CustomLoader或者设置package.path去读这个目录。xLua本身带的lua源码也都是txt结尾,是因为xLua本身就一个库,不含下载功能,也不方便运行时去某个地方下载代码,通过TextAsset是较简单的方式。

  • require路径问题

       路径是可以额外添加的,这样xlua工程识别的路径是那些?只需要传入不存在文件即可查看,具体如图所示:

exp3

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值