c#调用lua之用list,dictionary映射table
·
test.lua
--List
testList={1,23,4,5,7,8}
testList2={"1",true,23,"13"}
--dictionary
testDic={
["1"]=1,
["2"]=2,
["3"]=3,
["4"]=4,
["5"]=5
}
testDic2={
["true"]=true,
["1"]=13,
["false"]= -1,
["13"]=true
}
c#代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class CallListDic : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
LuaMgr.GetInstance().Init();
LuaMgr.GetInstance().DoLuaFile("Main");
//同种类型的list,注意list是值拷贝,是浅拷贝,修改这里list的值不会影响lua文件里的值
List<int> list1 = LuaMgr.GetInstance().Global.Get<List<int>>("testList");
for (int i = 0; i < list1.Count; i++)
{
Debug.Log(list1[i]);
}
//不同类型的list用object
List<object> list2 = LuaMgr.GetInstance().Global.Get<List<object>>("testList2");
for (int i = 0; i < list2.Count; i++)
{
Debug.Log(list2[i]);
}
//确定键值对类型的dictionary,注意dictionary也是值拷贝,是浅拷贝,修改这里dictionary里的值不回影响lua文件里的值
Dictionary<string, int> dic1 = LuaMgr.GetInstance().Global.Get<Dictionary<string, int>>("testDic");
foreach (string s in dic1.Keys)
{
Debug.Log(s + "_" + dic1[s]);
}
//不确定键值对类型的dictionary用object, 注意这里的遍历顺序不一定与lua文件中写的一致,但是都能遍历
Dictionary<object, object> dic2 = LuaMgr.GetInstance().Global.Get<Dictionary<object, object>>("testDic2");
foreach (object o in dic2.Keys)
{
Debug.Log(o + "_" + dic2[o]);
}
}
}
更多推荐



所有评论(0)