激活工具时 Roblox 破坏零件效果不佳

Roblox Destroying Parts when activating Tool not quite working

我希望每次我 leftclick/Activate 工具时,都会有一个零件被破坏。所以我把一些零件放在一个文件夹里,并把它设为 Table(“零件Table”)。然后我继续执行一个函数,该函数运行成对循环以从文件夹中删除一个部分并中断。那是因为我不想一键删除所有内容,那样没有乐趣。每当我删除一个部分时,我也会让系统打印。出乎我的意料,它只工作了一次。只删除了一个Part,而系统一直在打印,当我点击的时候。
Look at me being disappointed

1 local PartTable = game.Workspace.Folder:GetChildren()
2 local Tool = script.Parent
3
4 Tool.Activated:Connect(function()
5   for i, v in pairs(PartTable) do
6       v:Destroy()
7       print("Part deleted")
8       break
9   end
10  end)

我也像是一个完整的脚本初学者。抱歉

问题是您在销毁第一个元素后从未更新 table。在第一个 运行 上,你破坏了数组中第一个位置的方块,然后逃脱。不过,列表中的第一个元素仍然指向被销毁的块。在第二个运行,它再次“销毁”同一个块,然后再次退出循环。

尽管修复非常简单,您只需将 table 分配移动到工具的 Activated 连接中。这将在每次激活工具时获取 children 的更新列表。

local Tool = script.Parent

tool.Activated:Connect(function()
    -- fetch the parts in the folder
    local PartTable = game.Workspace.Folder:GetChildren()

    -- delete one
    if #PartTable > 0 then
        PartTable[1]:Destroy()
    end
end)