public static LuaTable NewTable() { state.LuaNewTable(); int oldTop = state.LuaGetTop(); LuaTable table = state.CheckLuaTable(-1); state.LuaSetTop(oldTop); return(table); }
//C#传递lua表到Lua脚本 void TestTableToLua() { m_luastate.LuaCreateTable(0, 0); LuaTable tab = m_luastate.CheckLuaTable(-1); tab["name"] = "zzf"; tab["id"] = 10001; m_luastate.LuaCreateTable(); LuaTable tab1 = m_luastate.CheckLuaTable(-1); for (int i = 0; i < 10; ++i) { m_luastate.LuaCreateTable(0, 0); LuaTable tempTab = m_luastate.CheckLuaTable(-1); for (int j = 0; j < 10; ++j) { tempTab[j + 1] = 100 + j; } tab1[i + 1] = tempTab; } tab["data"] = tab1; LuaFunction luaFunc = m_luastate.GetFunction("TestTableToLua"); luaFunc.Call(tab); System.Action <object[]> func1 = delegate(object[] objs) { if (objs.Length == 2) { GameLogger.LogGreen("data 1 = " + System.Convert.ToInt32(objs[0])); GameLogger.LogGreen("data 2 = " + System.Convert.ToString(objs[1])); } }; System.Action func2 = delegate() { GameLogger.LogError("--------------"); }; LuaFunction luaFunc2 = m_luastate.GetFunction("TestCSharpDelegate"); luaFunc2.Call(func2); }