热更学习笔记10~11----lua调用C#中的List和Dictionary、拓展类中的方法
[10]Lua脚本调用C#中的List和Dictionary
调用还是在上文中使用的C#脚本中Student类:
lua脚本:
print("------------访问使用C#脚本中的List和Dictionary-----------")
student.list:Add(2024)
student.list:Add(5)
student.list:Add(18)
local listSize = student.list.Count
print("list长度".. tostring(listSize))
--遍历list
for i = 0,listSize - 1 do
print("--->" .. student.list[i])
end
print(student.list)
student.dic:Add(1,"北京")
student.dic:Add(2,"上海")
student.dic:Add(3,"广州")
student.dic:Add(4,"深圳")
--遍历dic
--使用迭代器遍历键值对
local iterDic = student.dic:GetEnumerator()
while iterDic:MoveNext() do
local val = iterDic.Current.Value
print("--->" .. iterDic.Current.Key .. "---".. val)
end
--单独遍历键
local iterDicKey = student.dic.Keys:GetEnumerator()
while iterDicKey:MoveNext() do
print("键---" .. iterDicKey.Current)
end
--遍历值
local iterDicVal = student.dic.Values:GetEnumerator()
while iterDicVal:MoveNext() do
print("值---" .. iterDicVal.Current)
end
----------------------在lua脚本中新增C#中的dic和list
----比较麻烦 需要新添加要增加的数据结构类型
--新增list
local list2 = System.Collections.Generic.List_int()
list2:Add(5)
list2:Add(16)
print("list2[0]" .. list2[0])
print("list2[1]" .. list2[1])
--新增加字典
local dic2 = System.Collections.Generic.Dictionary_int_string()
dic2:Add(521,"我爱你")
local iterDic2 = dic2:GetEnumerator()
while iterDic2:MoveNext() do
local key = iterDic2.Current.Key
local val = iterDic2.Current.Value
print("Dic2---" .. key .. "--" .. val)
end
CustomSetting中新增的使用的C#中的数据结构类型,就此可以体会一下lua中的userdata的数据类型!
[11]Lua中调用C#类中的拓展方法
在lua中调用Student类的拓展方法
--调用拓展类中的方法
local Jack = TestScripts.Student("Jack")
--调用拓展方法 . 调用需要传一个自身引用
Jack.SingSunny(self)
--或者 使用 :调用
Jack:SingSunny()
所调用的C#脚本中的类:
public static class Tools
{
public static void SingSunny(this Student student)
{
Debug.Log("我在唱周董的晴天!");
}
}
public class Student
{
private string _name;
public Student(string name)
{
_name = name;
}
public void Speak()
{
Debug.Log("my name is " + _name);
}
//+ 新增数组内容
public int[] array = new int[5] { 1, 2, 3, 4, 5 };
public List<int> list = new List<int>() { 6, 7, 8, 9, 10 };
public Dictionary<int, string> dic = new Dictionary<int, string>();
}
CustomSetting中将拓展类Tools和被拓展的类Student相关联:
调用结果打印: