我只是在一起添加数字,但它仍然是错误的。我使用type()
来检查vector
是否是一个表,它总是说它是,但它继续说它是一个数字。
任何人都可以告诉我为什么会发生这种情况并找到解决方法(变量vector
是一个vector3对象)?非常感谢任何帮助。
的Vector3:
function new(x, y, z)
return setmetatable({x = x, y = y, z = z}, meta) --{} has public variables
end
此处的所有Vector3文件:http://pastebin.com/csBmJG36
ERROR:
尝试索引本地'vector'(数字值)
SCRIPT:
function translate(object, x, y, z)
for i, v in pairs(object) do
if (i == "Vertices") then
for _, q in pairs(v) do
for l, vector in pairs(q) do
vector.x = vector.x + x;
vector.y = vector.y + y;
vector.z = vector.z + z;
end
end
end
end
end
答案 0 :(得分:2)
让我们通过删除loop-switch反模式来重构你的代码:
function translate(object, x, y, z)
for _, q in pairs(object.Vertices) do
for l, vector in pairs(q) do
-- Test the type of vector here...
vector.x = vector.x + x;
vector.y = vector.y + y;
vector.z = vector.z + z;
end
end
end
因此,访问object.Vertices[_][l].x
时会发生错误。
这将是一个奇怪的顶点列表,它包含顶点列表列表。