使用Xlua 在Unity调用lua脚本 --------初级

首先到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文件夹中方便使用

使用Xlua 在Unity调用lua脚本 --------初级_第1张图片在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("a"); //获取002.lua中的字段a 并重新赋值
        Debug.Log("我是lua中变量"+a);
        string str =env.Global.Get("str1");
        Debug.Log("我是lua中变量" + str);
        bool flag = env.Global.Get("flag");
        Debug.Log("我是lua中变量" + flag);
        Action funXlua = env.Global.Get("Lua_Fun"); //Lua_Fun是一个无参无返回值的函数
        funXlua();  

输出结果为:使用Xlua 在Unity调用lua脚本 --------初级_第2张图片

第二个最后没输出'张',应该是我们没把002.lua这个文档的格式没改成UTF-8 所以才会出现三个'lll'

LUA: 指的是lua中的输出 env.Dostring("")

 在lua中没有类的概念,所以用table表代替,在lua脚本中定义一个table表然后在unity中调用

使用Xlua 在Unity调用lua脚本 --------初级_第3张图片

定义完后,在c#脚本中通过类来调用lua脚本table表中的元素字段函数

使用Xlua 在Unity调用lua脚本 --------初级_第4张图片

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不会处理 
    }

 

 

你可能感兴趣的:(C#相关知识,Unity3D)