Lua - 在循环中扩展表
Posted
技术标签:
【中文标题】Lua - 在循环中扩展表【英文标题】:Lua - Extending Tables in loops 【发布时间】:2015-12-20 04:53:39 【问题描述】:注意:这是在Roblox's version of Lua。 我有以下 sn-p 代码:
for index, child in pairs(workspace.IMG:GetChildren()) do
xyz = child.Position
ImgScript =
table.insert(ImgScript, -1, child.BrickColor.Number, xyz.X, xyz.Y, xyz.Z)
end
所以workspace.IMG
是一个模型,里面有一堆砖块。我正在尝试将该模型转换为script builder 的脚本。所以我可以为每一块砖做Instance.new('Part', script) blah blah blah
,但这相当于一个大脚本。因此,我正在制作一个包含所有必要信息(BrickColor 和 Position)的表格。这是我希望表格的样子:
BrickColor Number, X, Y, Z, 123, 14, 52, 65, 156, 13, 52, 65, etc.
但我目前拥有的脚本并没有制作这种表格。它什么也没做;事实上,我不希望它按照我的要求去做。我只是不知道如何使它成为这种桌子。
【问题讨论】:
我尝试连接而不是table.insert
,但它说我无法连接表。
这称为serialization。您还可以查看 Roblox 的预先编写的序列化程序。见this model。
@JamesT 我一直在寻找类似的东西,但不知何故我从未找到它。谢谢,但是 ImgBrick 模型的字符串太大了,即使是低分辨率的 50x50 图像被分成 3 个部分。所以谢谢,我会在需要时使用它,但不是为了这个。
【参考方案1】:
把那一行写上
ImgScript =
在循环之前。实际上,您在每次迭代时都会创建一个新表(并丢弃前一个表)。
如果您希望 ImgScript 表以“标题”条目开头,请将其添加到此处。
当然,table.insert
调用应该是
table.insert(ImgScript, child.BrickColor.Number, xyz.X, xyz.Y, xyz.Z)
最后,整个脚本将是:
ImgScript = 'BrickColor Number', 'X', 'Y', 'Z'
for index, child in pairs(workspace.IMG:GetChildren()) do
local xyz = child.Position
table.insert(ImgScript, child.BrickColor.Number, xyz.X, xyz.Y, xyz.Z)
end
【讨论】:
【参考方案2】:我想你想要这个:
ImgScript =
for index, child in pairs(workspace.IMG:GetChildren()) do
xyz = child.Position
table.insert(ImgScript,child.BrickColor.Number, xyz.X, xyz.Y, xyz.Z)
end
【讨论】:
谢谢,这也有效,但我不得不把它交给哈维尔添加更多解释。以上是关于Lua - 在循环中扩展表的主要内容,如果未能解决你的问题,请参考以下文章
for 循环是不是遍历 Lua 和 Love2d 中的空表?
在 Lua 中,我应该在循环的每次迭代还是在循环之前定义一个变量?