使用 LuaBridge 从 LuaRef 读取参数列表
Read a list of parameters from a LuaRef using LuaBridge
[已解决]
我正在构建一个使用 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(myRigidbodyTable, "Type") 时,myRigidbodyTable 是一个LuaRef 和 Rigidbody 的值,这个函数应该 return 一个 std::string 和值“Sphere”。
我的问题是当我完成读取和存储我的 Transform 组件的值时,当我想读取“Ridigbody”的值并且我的引擎读取值“类型”,在 Stack::push(lua_State* L, const std::string& str, std::error_code&).
处抛出未处理的异常
我很确定这与我的组件 Transform 存储了一个参数值列表(如“Position”)有关,因为我在读取只有一个值的组件时没有遇到任何问题每个参数。如果我做错了什么,正确的方法是什么?
我还想指出,我是 LuaBridge 的新手,所以这可能是一个我一直找不到解决方案的初学者问题。感谢您的帮助:)
发现问题,我没有正确阅读 table。而不是
LuaRef myTable = getGlobal(state, tableName.c_str());
我正在使用以下
LuaRef myTable = getGlobal(state, tableName.c_str()).getMetatable();
[已解决]
我正在构建一个使用 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
我的问题是当我完成读取和存储我的 Transform 组件的值时,当我想读取“Ridigbody”的值并且我的引擎读取值“类型”,在 Stack::push(lua_State* L, const std::string& str, std::error_code&).
处抛出未处理的异常我很确定这与我的组件 Transform 存储了一个参数值列表(如“Position”)有关,因为我在读取只有一个值的组件时没有遇到任何问题每个参数。如果我做错了什么,正确的方法是什么?
我还想指出,我是 LuaBridge 的新手,所以这可能是一个我一直找不到解决方案的初学者问题。感谢您的帮助:)
发现问题,我没有正确阅读 table。而不是
LuaRef myTable = getGlobal(state, tableName.c_str());
我正在使用以下
LuaRef myTable = getGlobal(state, tableName.c_str()).getMetatable();