都是通过同一个方法得到的
例如得到List
List<int> list = LuaMgr.GetInstance().Global.Get<List<int>>("testList");
只要把Get的泛型换成对应的类型即可
得到Dictionnary
Dictionary<string, int> dic2 = LuaMgr.GetInstance().Global.Get<Dictionary<string, int>>("testDic");
得到类
类里面的成员都必须是公有public的,而且成员名字要和lua脚本内的类相同
类
cs
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的类
Lua
CallLuaClas = {
testInt = 1,
testBool = true,
testFloat = 1.1,
testString = "1",
function testFun()
print("function")
end,
testInClass = {
testInInt = 5,
}
}
映射类代码
cs
CallLuaClass obj = LuaMgr.GetInstance().Global.Get<CallLuaClass>("testClas");
万能类LuaTable装表(不建议使用)
cs
void Start()
{
LuaMgr.GetInstance().Init();
LuaMgr.GetInstance().DoLuaFile("Main");
//不建议使用LuaTable和LuaFunction 效率低
//引用对象
LuaTable table = LuaMgr.GetInstance().Global.Get<LuaTable>("testClas");
Debug.Log(table.Get<int>("testInt"));
Debug.Log(table.Get<bool>("testBool"));
Debug.Log(table.Get<float>("testFloat"));
Debug.Log(table.Get<string>("testString"));
table.Get<LuaFunction>("testFun").Call();
//改 引用
table.Set("testInt", 55);
//使用完要销毁
table.Dispose();
}
备注*
LuaMgr是自己写的一个Xlua管理器,他是单例模式管理器,里面定义了luaEnv并实例化。GetInstance方法是得到这个LuaMgr单例类的,Global返回了luaEnv内的_G表,其中_G自带Get方法得到对应表