如果你想让你在编写Lua的时候给你增加对Unity的代码提示的话 请看:https://blog.csdn.net/FransicZhang/article/details/89483861
首先,你得在项目中加入XLua的环境
脚本中添加对Xlua的引用
using XLua;
然后创建一个XLua的虚拟机(解析器) 最好项目全局只有一个
LuaEnv luaenv = new LuaEnv();
1、我们先写一个简单的XLua测试看看能不能跑起来
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("print('I am XLua')");
可以看出来 XLua的环境没有问题。
2、我们创建一个HelloXLua.lua的文件 来使用C#访问这个Lua文件 看能不能访问出里面的全局变量
--Lua脚本
a = 10
str = "Zhang"
IsDie = true
然后在C#中写:
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("require 'HelloXLua'");//固定写法 传入Lua文件名
int a = luaenv.Global.Get<int>("a");//获取Lua的全局变量
string str = luaenv.Global.Get<string>("str");//获取Lua的全局变量
bool IsDie = luaenv.Global.Get<bool>("IsDie");//获取Lua的全局变量
print(a);
print(str);
print(IsDie);
可以看到我们已经成功的访问到了Lua中的全局变量
3、我们来看怎么运行Lua中的方法
(带参没有返回值)
--Lua脚本
function add(a, b)
print(a + b)
print("我被调用了")
end
//C#脚本
LuaEnv luaenv = new LuaEnv();
Add add = luaenv.Global.Get<Add>("add");
add(20, 60);//返回值方法 多个返回值
add = null;
//在外面定义一个委托
[CSharpCallLua]//标签 固定写法
delegate int Add(int a, int b);
可以看出来带参数的方法也成功的调用
(带参有返回值)
--Lua脚本
function add(a, b)
print(a + b)
print("我被调用了")
-- body
return a + b, a, b
end
参数使用 ref或者out
//C#脚本
Add add = luaenv.Global.Get<Add>("add");
int resa, resb;
int adsd = add(20, 60, out resa, out resb);//返回值方法 多个返回值
print(resa);
print(resb);
print("adsd--" + adsd);
//定义委托
[CSharpCallLua]
delegate int Add(int a, int b, out int resa, out int resb);