tolua#的Examples-08_AccessingArray

    private string script =
        @"
            function TestArray(strs)
                local len = strs.Length
                
                for i = 0, len - 1 do
                    print(strs[i])
                end
                return 1, '123', true
            end            
        ";

    void Start()
    {
        LuaState lua = new LuaState();
        lua.Start();
        lua.DoString(script);

        string[] strs = { "aaa", "bbb", "ccc" };
        LuaFunction func = lua.GetFunction("TestArray");

        //这里多增加了一种no gc call的方式
        func.BeginPCall();
        func.Push(strs);
        func.PCall();
        double arg1 = func.CheckNumber();
        string arg2 = func.CheckString();
        bool arg3 = func.CheckBoolean();
        Debugger.Log("return is {0} {1} {2}", arg1, arg2, arg3);
        func.EndPCall();

        //转换一下类型,避免可变参数拆成多个参数传递
        object[] objs = func.Call((object)strs);

        if (objs != null)
        {
            Debugger.Log("return is {0} {1} {2}", objs[0], objs[1], objs[2]);
        }
    }

这个例子基本在ulua原来的数组例子上多扩展了些调用方式,演示c#与lua如何访问对方的数组变量,需要注意的是:        
//转换一下类型,避免可变参数拆成多个参数传递object[] objs = func.Call((object)strs);
访问方式已经非常简单明确了,这里多提一句,这么久很多人都希望lua中访问c#的很多泛型容器,我个人是不推荐使用,为了稳定性建议多使用lua里面的table,应该是最靠谱的方式,否则在iOS_il2cpp平台可能会遇到坑。

[本日志由 admin 于 2016-03-20 09:29 PM 更新]
上一篇: tolua#的Examples-07_LuaThread
下一篇: tolua#的Examples-09_Dictionary
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭