Lua循环异常终止问题:遍历Street下Town对象为何仅处理一个?
问题原因与解决方案
- 核心问题是变量名冲突:外层循环和内层循环复用了
object作为迭代变量,内层的object会覆盖外层的object引用,导致外层循环无法正常完成所有迭代。 - 具体过程:当外层循环第一次拿到
Town对象并赋值给object后,进入内层循环时,内层循环会把object.house的子对象逐个赋值给object,此时外层的object已经被替换成了内层的子对象。当内层循环结束,外层循环要继续下一次迭代时,后续逻辑会因为object不再是Town对象而出现异常,直接终止循环。
修正后的代码(修改内层循环变量名避免冲突,同时替换Roblox旧API写法):
for _, townObject in ipairs(game.Workspace.Street:GetChildren()) do if townObject.Name == "Town" then for _, child in ipairs(townObject.house:GetChildren()) do if string.sub(child.Name, 1, 5) == "wind_" then child.BrickColor = BrickColor.new("Light blue") end end end end
内容的提问来源于stack exchange,提问作者Nikassaiop End
相关产品推荐
相关产品推荐

