• 作者:老汪软件技巧
  • 发表时间:2024-01-03 00:00
  • 浏览量:

都是通过同一个方法得到的

例如得到List

List list = LuaMgr.GetInstance().Global.Get>("testList");

只要把Get的泛型换成对应的类型即可

得到

Dictionary dic2 = LuaMgr.GetInstance().Global.Get>("testDic");

得到类

类里面的成员都必须是公有的,而且成员名字要和lua脚本内的类相同

public class CallLuaClass
{
    //在这个类中去声明成员变量
    //名字一定要和 Lua那边的一样
    //公共 私有和保护 没办法赋值
    //这个自定义中的 变量 可以更多也可以更少
    //如果变量比 lua中的少 就会忽略它
    //如果变量比 lua中的多 不会赋值 也会忽略
    public int testInt;
    public bool testBool;
    public float testFloat;
    public float testString;
    public UnityAction testFun;
    public CallLuaInClass testInClass;
}
public class CallLuaInClass
{
    public int testInInt;
}

lua的类

CallLuaClas = {
	testInt = 1,
	testBool = true,
	testFloat = 1.1,
	testString = "1",
    
    function testFun()
    	print("function")
    end,
    testInClass = {
    	testInInt = 5,
    }
}

映射类代码

CallLuaClass obj = LuaMgr.GetInstance().Global.Get("testClas");

万能类装表(不建议使用)

void Start()
    {
        LuaMgr.GetInstance().Init();
        LuaMgr.GetInstance().DoLuaFile("Main");
        //不建议使用LuaTable和LuaFunction 效率低
        //引用对象
        LuaTable table = LuaMgr.GetInstance().Global.Get("testClas");
        Debug.Log(table.Get("testInt"));
        Debug.Log(table.Get("testBool"));
        Debug.Log(table.Get("testFloat"));
        Debug.Log(table.Get("testString"));
        table.Get("testFun").Call();
        //改  引用
        table.Set("testInt", 55);
        //使用完要销毁
        table.Dispose();
    }

备注*

是自己写的一个Xlua管理器,他是单例模式管理器,里面定义了并实例化。方法是得到这个单例类的,返回了内的_G表,其中_G自带Get方法得到对应表