tolua#的Examples-09_Dictionary

    Dictionary map = new Dictionary();

    string script =
        @"              
            function TestDict(map)                        
                local iter = map:GetEnumerator()
                
                while iter:MoveNext() do
                    local v = iter.Current.Value
                    print('id: '..v.id ..' name: '..v.name..' sex: '..v.sex)                                
                end
            end                        
        ";

    void Awake ()
    {
        map.Add(1, new TestAccount(2, "隔壁老王", 2));
        map.Add(2, new TestAccount(1, "王伟", 1));
        map.Add(3, new TestAccount(2, "王芳", 0));
        
        LuaState luaState = new LuaState();
        luaState.Start();
        BindMap(luaState);        

        luaState.DoString(script);        
        LuaFunction func = luaState.GetFunction("TestDict");
        func.BeginPCall();
        func.Push(map);
        func.PCall();
        func.EndPCall();        

        func.Dispose();
        func = null;
        luaState.CheckTop();
        luaState.Dispose();
        luaState = null;    
    }

    //示例方式,正常导出无需手写下面代码
    void BindMap(LuaState L)
    {
        L.BeginModule(null);
        TestAccountWrap.Register(L);
        L.BeginModule("System");
        L.BeginModule("Collections");
        L.BeginModule("Generic");
        System_Collections_Generic_Dictionary_int_TestAccountWrap.Register(L);
        System_Collections_Generic_KeyValuePair_int_TestAccountWrap.Register(L);
        L.EndModule();
        L.EndModule();
        L.EndModule();
        L.EndModule();
    }
这个例子主要演示的是lua中如何遍历访问c#的Dictionary类对象,里面需要说的一个点是BindMap(luaState); 已经注明,这个函数是为了让例子能够独立运行,写的这个函数,其实正常开发的时候,并不需要执行它,而是在CustomSettings.cs里面的static BindType[] customTypeList ={...}添加即可:

//------------------------为例子导出--------------------------------
//_GT(typeof(TestEventListener)),                
//_GT(typeof(TestAccount)),
//_GT(typeof(Dictionary)).SetLibName("AccountMap"),                
//_GT(typeof(KeyValuePair)),    
//-------------------------------------------------------------------

上一篇: tolua#的Examples-08_AccessingArray
下一篇: tolua#的Examples-10_Enum
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 2 | 引用: 0 | 查看次数: -
FrozenKresnik[2016-06-21 08:12 PM | | | 116.228.194.230 | del | 回复回复]
C#传到lua中的List和Dictionary为何不能用[]取值了?
huanglang[2016-06-16 04:29 PM | | | 218.18.250.109 | del | 回复回复]
额,这样用在ios上没问题吧?
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭