xlua - c#中遍历LuaTable
遍历数组
public static void Test1(LuaTable luaObj_AllDatas) { int cnt = luaObj_AllDatas.Length; for (int i = 1; i <= cnt; ++i) { luaObj_AllDatas.Get(i, out LuaTable luaObj_Data); using (luaObj_Data) { luaObj_Data.Get("Id", out int id); luaObj_Data.Get("Name", out string name); //...... } } }
遍历单一表
public static void Test2(LuaTable luaObj_Datas) { luaObj_Datas.ForEach<int, LuaTable>((k, v) => { int id = k; LuaTable data = v; //...... }); }
遍历复合表
public static void Test3(LuaTable luaObj_Datas) { var keysAry = luaObj_Datas.GetKeys(); foreach (object key in keysAry) { if (key is string) { string strKey = (string)key; luaObj_Datas.Get(strKey, out object val); CheckVal(val); } else if (key is double) { string numKey = (double)key; luaObj_Datas.Get(numKey, out object val); CheckVal(val); } else { luaObj_Datas.Get(key, out object val); CheckVal(val); } } } public static void CheckVal(object val) { if (val is string) { string str = (string)val; } else if (val is double) { double d = (double)val; } else if (val is LuaTable) { var luaObj = (LuaTable)val; using (luaObj) { //...... } } else { string str = val.ToString(); } }

浙公网安备 33010602011771号