如何将Lua数据表解析为C#字典或其他可用类?

时间:2018-07-03 17:39:48

标签: c# lua

我有这个Lua文件,其中包含以下代码:

options = {
["VR"] = {
    ["box_mouse_cursor"] = false,
    ["custom_IPD"] = 63.5,
    ["custom_IPD_enable"] = true,
    ["enable"] = false,
    ["hand_controllers"] = false,
    ["pixel_density"] = 2,
    ["prefer_built_in_audio"] = true,
    ["use_mouse"] = true,
    }
}

我试图找到一个程序集,将其解析为.Net Framework 4.5.1 C#项目可用的组件。 LuaInterface是.NET标准2.0项目,无法在.Net Framework 4.5.1中使用,因此不在讨论之列。

是否有可用的工具可以解析此信息,并希望将其重新序列化?

2 个答案:

答案 0 :(得分:3)

我会考虑使用Lua将您具有的嵌套表结构编码为JSON。这将为您提供一种标准格式以写入磁盘和/或轻松地传递到另一个代码库。当您在线搜索(lua table encode json时,甚至在此处搜索时,都有很多可用的选项,因此当有人问类似的问题时,人们正试图踩着JSON编码/解码Lua库。例如,Here是相反的情况。

答案 1 :(得分:2)

0)下载LuaInterface 2.0.3
1)将LuaInterface.dll添加到C#项目中,将lua51.dll复制到项目文件夹中
2)修改app.config(向启动标签添加属性)

<startup useLegacyV2RuntimeActivationPolicy="true">

3)编写C#代码以读取所需的值:

using LuaInterface;

        Lua lua = new Lua();
        string Lua_code = @"
            options = {
                [""VR""] = {
                    [""box_mouse_cursor""] = false,
                    [""custom_IPD""] = 63.5,
                    [""custom_IPD_enable""] = true,
                    [""enable""] = false,
                    [""hand_controllers""] = false,
                    [""pixel_density""] = 2,
                    [""prefer_built_in_audio""] = true,
                    [""use_mouse""] = true,
                }
            }
        ";
        lua.DoString(Lua_code);
        double custom_IPD_value = (double)lua["options.VR.custom_IPD"];
        textBox1.Text = custom_IPD_value.ToString();