コード例 #1
0
    public static LuaTable NewTable()
    {
        state.LuaNewTable();
        int      oldTop = state.LuaGetTop();
        LuaTable table  = state.CheckLuaTable(-1);

        state.LuaSetTop(oldTop);
        return(table);
    }
コード例 #2
0
    //C#传递lua表到Lua脚本
    void TestTableToLua()
    {
        m_luastate.LuaCreateTable(0, 0);
        LuaTable tab = m_luastate.CheckLuaTable(-1);

        tab["name"] = "zzf";
        tab["id"]   = 10001;

        m_luastate.LuaCreateTable();
        LuaTable tab1 = m_luastate.CheckLuaTable(-1);

        for (int i = 0; i < 10; ++i)
        {
            m_luastate.LuaCreateTable(0, 0);
            LuaTable tempTab = m_luastate.CheckLuaTable(-1);
            for (int j = 0; j < 10; ++j)
            {
                tempTab[j + 1] = 100 + j;
            }
            tab1[i + 1] = tempTab;
        }
        tab["data"] = tab1;
        LuaFunction luaFunc = m_luastate.GetFunction("TestTableToLua");

        luaFunc.Call(tab);

        System.Action <object[]> func1 = delegate(object[] objs)
        {
            if (objs.Length == 2)
            {
                GameLogger.LogGreen("data  1 = " + System.Convert.ToInt32(objs[0]));
                GameLogger.LogGreen("data  2 = " + System.Convert.ToString(objs[1]));
            }
        };

        System.Action func2 = delegate()
        {
            GameLogger.LogError("--------------");
        };
        LuaFunction luaFunc2 = m_luastate.GetFunction("TestCSharpDelegate");

        luaFunc2.Call(func2);
    }