使用LuaBridge从LuaRef读取参数列表



[已解决]

我正在构建一个游戏引擎,它使用LuaBridge来读取实体的组件。在我的引擎中,一个实体文件看起来是这样的,其中";"组件";是我的实体拥有的组件列表,其余参数用于设置每个单独组件的值:

-- myEntity.lua
Components = {"MeshRenderer", "Transform", "Rigidbody"}
MeshRenderer = {
    Type = "Sphere",
    Position = {0,300,0}
}
Transform = {
    Position = {0,150,0},
    Scale = {1,1,1},
    Rotation = {0,0,0}
}
Rigidbody = {
    Type = "Sphere",
    Mass = 1
}

我目前正在使用这个函数(在C++中(,以便从LuaRef中的一个参数(给定其名称(中读取值。

template<class T>
T readParameter(LuaRef& table, const std::string& parameterName)
{
    try {
        return table.rawget(parameterName).cast<T>();
    }
    catch (std::exception e) {
        // std::cout ...
        return NULL;
    }
}

例如,当调用readVariable<;std::string>(myRigidbodyTable,"Type"(,其中myRigidbodyTable是具有Rigidbody值的LuaRef,此函数应返回具有值"的std::string;球体";。

我的问题是当我完成读取和存储Transform组件的值时;Ridigbody";并且我的引擎读取值"0";类型";,在Stack::push(lua_State*L,const std::string&str,std::error_code&(处引发未处理的异常。

我非常确信这与我的组件Transform存储参数的值列表有关;位置";,因为我在读取每个参数只有一个值的组件时没有遇到任何问题。如果我做错了什么,正确的方法是什么?

我还想指出,我是LuaBridge的新手,所以这可能是一个初学者的问题,我一直找不到解决方案。感谢您的帮助:(

发现问题,我没有正确阅读表格。代替

LuaRef myTable = getGlobal(state, tableName.c_str());

我使用了以下

LuaRef myTable = getGlobal(state, tableName.c_str()).getMetatable();

相关内容

  • 没有找到相关文章

最新更新