东莞公司官网建站,网站建设 字体版权,人才网站建设cms,对网站建设的建议ToLua是使用原生C#List 介绍Lua中使用原生ListC#调用luaLua中操作打印测试如下 Lua中使用原生DictionaryC#调用luaLua中操作打印测试如下 介绍
当你用ToLua时C#和Lua之间肯定是会互相调用的#xff0c;那么lua里面使用List和Dictionary肯定是必然的#xff0c;在C#中可以调用… ToLua是使用原生C#List 介绍Lua中使用原生ListC#调用luaLua中操作打印测试如下 Lua中使用原生DictionaryC#调用luaLua中操作打印测试如下 介绍
当你用ToLua时C#和Lua之间肯定是会互相调用的那么lua里面使用List和Dictionary肯定是必然的在C#中可以调用LuaTable、LuaDictTable、LuArrayTable这三种和List、Dictionary进行互相转换和调用在Lua里面其实也可以将List和Dictionary转换成LuaTable不转换当然也可以使用。
Lua中使用原生List
这里我会将一些我用到的基础用法列举一下List T 自定义的T也是支持的这里不具体展示了 下面是两个List表传入到Lua中在lua中操作两个List
C#调用lua
无GC的调用可以参考我无GC调用lua的文章 Listint lst new Listint();lst.Add(2);lst.Add(3);lst.Add(4);Listint lst2 new Listint();lst2.Add(10);lst2.Add(11);lst2.Add(12);//Util.CallMethod(UIMainCityCtrl, CSharpListTest, lst, lst2);Util.NoGCCallMethodListint,Listint(UIMainCityCtrl, CSharpListTest, lst, lst2); Lua中操作
这里其实已经把List打了Wrap文件所以List是可以在lua中直接调用如下所示的一些常规操作 function UIMainCityCtrl.CSharpListTest(CSharpList,lst2)CSharpList:Add(555)this.LstLog(CSharpList)logError(tostring(CSharpList:Contains(555)))CSharpList:Remove(555)this.LstLog(CSharpList)CSharpList:AddRange(lst2)this.LstLog(CSharpList)CSharpList:RemoveAt(0)CSharpList:Insert(0, 123)this.LstLog(CSharpList)CSharpList:Clear()this.LstLog(CSharpList)
endfunction this.LstLog(lst)logError(Count ..lst.Count)for i0,lst.Count - 1 dologError(lst[..i..]..lst[i])end
end
打印测试如下
可以结合我上面的代码部分和操作对比一下下面的打印
Lua中使用原生Dictionary
C#调用lua
无GC的调用可以参考我无GC调用lua的文章 Dictionaryint,int dic1 new Dictionaryint,int();dic1.Add(1, 10);dic1.Add(2, 20);Dictionaryint,int dic2 new Dictionaryint,int();dic2.Add(3, 30);dic2.Add(4, 40);//Util.CallMethod(UIMainCityCtrl, CSharpListTest, lst, lst2);Util.NoGCCallMethodDictionaryint, int, Dictionaryint, int(UIMainCityCtrl, CSharpListTest, dic1, dic2); Lua中操作
这里其实已经把List打了Wrap文件所以List是可以在lua中直接调用如下所示的一些常规操作 function UIMainCityCtrl.CSharpListTest(dic1,dic2)logError(dic1[1] ..dic1[1])logError(dic1[2] ..dic1[2])logError(dic2[3] ..dic2[3])logError(dic2[4] ..dic2[4])this.LstLog(dic1)this.LstLog(dic2)dic1:Add(3,50)dic1:Add(4,60)this.LstLog(dic1)logError(dic1:ContainsKey()..tostring(dic1:ContainsKey(1)))logError(dic1:ContainsValue()..tostring(dic1:ContainsValue(3)))dic1:Clear()this.LstLog(dic1)endfunction this.LstLog(dic)logError(Count ..dic.Count)local iter dic:GetEnumerator()while iter:MoveNext() dolocal k iter.Current.Keylocal v iter.Current.ValuelogError(k ..k.. , v ..v)end
end打印测试如下
可以结合我上面的代码部分和操作对比一下下面的打印