我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

使用Lua脚本调用C#中的List和Dictionary

来源:网络 更新时间:2024-05-19 04:31: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)

在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 list = new List() { 6, 7, 8, 9, 10 };

    public Dictionary dic = new Dictionary();

}

在CustomSetting中将拓展类Tools和被拓展的类Student相关联:

调用结果打印: