最近学习XLua,看了下官方的文档。对于我这样的小菜鸡而言需要知道的知识点还是蛮多的,就做个笔记,其实差不多等于把文档里面的知识ctrl C ctrl V一遍。正在准备学习这块的小伙伴们可以多看看官方给的文档。下面是自己的一个GitHub XLua Demo 地址。里面也存放了文档(XLuaDocs文件夹中)
这篇主要记录记录C#与XLua的相互交互,即C#如何访问调用Lua的属性方法和Lua如何调用C#的。对应的文档是《xLua教程》
注:本文一些XLua API和XLua标签等知识会在后面的文章慢慢整理,这边就不细说了。对应的官方文档里面大家也可以找到。
CSharpCallLua
CSharpCallLua,顾名思义CS里面去调用访问Lua代码里面的属性方法。对应的官方Demo为“CSharpCallLua”。
访问全局基本数据类型
假如我在Lua中定义了下面三个变量:
a = 1
b = 'hello world'
c = true
那么我们只需要通过luaenv.Global.Get<T>(name)就可在C#中访问这几个变量,如下:
LuaEnv luaenv = new LuaEnv();
Debug.Log("_G.a = " + luaenv.Global.Get<int>("a"));
Debug.Log("_G.b = " + luaenv.Global.Get<string>("b"));
Debug.Log("_G.c = " + luaenv.Global.Get<bool>("c"));
访问全局table
比如我在Lua中定义了如下的一个table:
d = {
f1 = 12, f2 = 34,
1, 2, 3,
add = function(self, a, b)
print('d.add called')
return a + b
end
}
方法1:将table映射到一个c#的class或struct中
我们可以定义一个class,将lua中的table里面的字段(即键值对的键&#x