XLua-Unity框架初探

前言

Lua由于其简单易用,方便热更等性质,一直是游戏行业的首推脚本语言。Unity引擎也诞生了很多款为其适配的Lua虚拟机运行环境,主要有XLua,SLua,ToLua和ULua,本文不会着力比较这几种框架的实现差异,只讨论其中背靠大厂腾讯的XLua框架。

应用场景

  • UI逻辑代码
  • Hotfix
  • 网络层
  • 除计算以外的常规逻辑(此处的计算指涉及矩阵等运算的场合)

XLua 常用 API

此处只会介绍常用的,合乎规范的内容,拓展阅读请访问XLua github

  • Lua虚拟机

XLua中对Lua虚拟机进行了封装,建立和移除一个全局环境很简单:

_luaEnv = new XLua.LuaEnv();
_luaEnv.Dispose();

在大致查看XLua C#部分封装中,可以看到,它将Lua的c通过dll形式引入 LuaAPI,然后对线程安全,异常等做了特殊处理。

  • require

XLua为了方便使用require,添加了 AddLoader 方法:

_luaEnv.AddLoader(LoadLua);
static byte[] LoadLua(ref string luaname)
{
   
    string realPath = @"LuaScripts/" + luaname + ".lua";
    TextAsset luaContent = Resources.Load(realPath) as TextAsset;
    return luaContent.bytes;
}

此处LoadLua是一个委托,使用Lambda函数亦可。
XLua支持多个Loader,会去遍历调用,直到读出数据为止。如果不添加任何Loader,它支持默认从Resources根目录读取后缀为“.txt”的lua文件。

  • dostring

使用 DoString 来实现Lua载入字符的功能,这块也是热更的重要功能。

_luaEnv.DoString("require('main')");
  • c# call lua

使用LuaTable来映射Lua表:

LuaTable luaMonoMap = _luaEnv.Global.Get<LuaTable>("luaMonoMap")
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值