都是通过同一个方法得到的
例如得到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脚本内的类相同
类
- 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");
万能类LuaTable装表(不建议使用)
- void Start()
- {
- LuaMgr.GetInstance().Init();
- LuaMgr.GetInstance().DoLuaFile("Main");
-
- //不建议使用LuaTable和LuaFunction 效率低
- //引用对象
- LuaTable table = LuaMgr.GetInstance().Global.Get
("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
("testFun").Call(); -
- //改 引用
- table.Set("testInt", 55);
-
- //使用完要销毁
- table.Dispose();
- }
备注*
LuaMgr是自己写的一个Xlua管理器,他是单例模式管理器,里面定义了luaEnv并实例化。GetInstance方法是得到这个LuaMgr单例类的,Global返回了luaEnv内的_G表,其中_G自带Get方法得到对应表