首先到GitHub上下载xlua https://github.com/Tencent/xLua 这个是腾讯推出的
下载完之后解包然后把xlua中Assets文件下的两个文件夹拖入unity中Assets文件下
然后里面有一些功能实例,可以看看,在这里就不细说了.
创建一个脚本,然后在创建一个 lua脚本,创建脚本前,我要说一下以免有些初学者不知道,unity呢!识别不了lua脚本,但是unity可以识别txt文档,所以创建脚本的时候就创建一个txt文档 例如: 文件名.lua.txt
因为unity识别不了Lua脚本,所以在lua脚本的后添加一个扩展名.txt这样就可以在unity中识别
然后就在002.lua.txt写一些字段 函数 什么的,在unity中使用xlua开始调用 把002.lua.txt放入Resources文件夹中方便使用
在lua中简单写了一些字段 与函数来调用
在unity中创建一个C#脚本然后通过LuaEnv来调用lua中的字段函数等
LuaEnv env = null; //实例一个lua虚拟机
void Start()
{
env = new LuaEnv();
env.DoString("require '002'");// 获取Lua 脚本 env.Dostring("") 是调用lua中的输出
int a = env.Global.Get<int>("a"); //获取002.lua中的字段a 并重新赋值
Debug.Log("我是lua中变量"+a);
string str =env.Global.Get<string>("str1");
Debug.Log("我是lua中变量" + str);
bool flag = env.Global.Get<bool>("flag");
Debug.Log("我是lua中变量" + flag);
Action funXlua = env.Global.Get<Action>("Lua_Fun"); //Lua_Fun是一个无参无返回值的函数
funXlua();
输出结果为:
第二个最后没输出'张',应该是我们没把002.lua这个文档的格式没改成UTF-8 所以才会出现三个'lll'
LUA: 指的是lua中的输出 env.Dostring("")
在lua中没有类的概念,所以用table表代替,在lua脚本中定义一个table表然后在unity中调用
定义完后,在c#脚本中通过类来调用lua脚本table表中的元素字段函数
Person类:
[CSharpCallLua] //映射Lua中的变量函数等都必须使用以[CSharpCallLua]标注的方可
class Person //定义一个接受Lua变量的类
{
public string name;
public int age;
public int age2;
}
[CSharpCallLua]
interface IPerson
{
string name { get; set; }
int age { get; set; }
void Function(int a, int b);
int Fun(int a, int b);
string One(int a);
}
}
private void OnDestroy()
{
env.Dispose();//销毁虚拟机 如果不销毁,则会永远存在GC不会处理
}