通过Dictionary<>与List<>访问table
-
1、Lua脚本代码
person={
name="fex",age="22",12,12,13,
eat=function(self,a,b) --声明方法1:self为该表自身的参数,类似C#中this
print(a+b)
print("我吃了")
end
}
--[[
--声明方法2:
function person:eat(a,b)
print(a+b)
end
--声明方法3:
function person.eat(self,a,b)
print(a+b)
end
--]]
-
2、C#脚本代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class _004_CsharpCallLua : MonoBehaviour
{
private LuaEnv env;
void Start()
{
env = new LuaEnv();
env.DoString("require 'CSharpCallLua'");
//3.通过Dictionary<> 与 List<>
Dictionary<string, object> dict = env.Global.Get<Dictionary<string, object>>("person");
foreach(string key in dict.Keys)
{
print(key + ":" + dict[key]);
}
print("-------------");
List<object> list = env.Global.Get<List<object>>("person");
foreach(object o in list)
{
print(o);
}
}
private void OnDestroy()
{
env.Dispose();
}
}
-
3、输出结果:
注意:
1.使用Dictionary<>与List<>方式比较轻量级,不用声明类与接口
2.使用Dictionary<>可以访问table中带有key的元素
3.使用List<>可以访问到table中的没有key的单独元素
4.Dictionary中的具体键值类型由实际需求而定,List<>也是如此
5.通常将Dictionary与List<>结合使用访问table中的所有元素