首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LuaRef从LuaBridge读取参数列表

使用LuaRef从LuaBridge读取参数列表
EN

Stack Overflow用户
提问于 2021-04-28 12:51:31
回答 1查看 240关注 0票数 0

下决心

我正在构建一个使用LuaBridge来读取实体组件的游戏引擎。在我的引擎中,实体文件如下所示,其中" components“是我的实体拥有的组件的列表,其余的参数用于为每个单独的组件设置值:

代码语言:javascript
复制
-- 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中的参数(给定其名称)中读取值。

代码语言:javascript
复制
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( myRigidbodyTable,"Type")时,如果myRigidbodyTable是一个具有刚体值的LuaRef,则该函数应该返回一个带有"Sphere“值的std::string。

我的问题是,当我完成读取和存储转换组件的值时,当我想读取"Ridigbody“的值时,当我的引擎读取值"Type”时,就会在Stack::push(lua_State* L,const::string& str,std::error_code&)引发一个未处理的异常。

我很确定这与我的组件转换存储参数列表有关,比如“位置”,因为在读取每个参数只有一个值的组件时,我没有遇到任何问题。如果我做错了什么正确的方法是什么?

我还想指出,我是LuaBridge新手,所以这可能是一个初学者的问题,我一直找不到解决方案。如有任何帮助,我们将不胜感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 21:04:09

发现问题时,我没有正确地看桌子。而不是

代码语言:javascript
复制
LuaRef myTable = getGlobal(state, tableName.c_str());

我使用了以下方法

代码语言:javascript
复制
LuaRef myTable = getGlobal(state, tableName.c_str()).getMetatable();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67300592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档