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 循环

在 Lua 中,我应该在循环的每次迭代还是在循环之前定义一个变量?

如何让 lua 在 while true 循环中停止 if 循环?

Lua高性能脚本语言快速入门

车辆生成菜单在lua中无限循环