如何在完成所有迭代之前中断for循环Godot gdscript

问题描述

我在godot中的for循环遇到问题,希望您能为您提供帮助!

对于我的游戏清单系统,我正在使用for循环来更新清单中的物品数量。例如,如果我发射了一个箭头,则for循环将遍历所有库存位置,找到带有箭头的位置,并将数量减少一个,如下所示:

    for slot in range(0,inventory_maxSlots):
        
        if (inventory[String(slot)]["id"] == String(item)):
            var newAmount = inventory[String(slot)]["amount"] - 1
            if (newAmount == 0):
                inventory_updateItem(slot,0)
                update_slot(slot)
            else:
                inventory[str(slot)] = {"id": str(item),"amount": int(newAmount)}
                update_slot(slot)

这非常有效,除了当我在多个插槽中有成堆的箭头时。例如,如果我有3个插槽,每个插槽填充10个箭头,则在发射1个箭头之后,所有堆叠将减少3个。因此,我最终将得到3个堆叠,每个堆叠7个箭头。如果我有4支箭,那么每支箭减少4支,等等。

我只希望循环开始,找到带有箭头的第一个插槽,将其数量减少1,然后停止。我尝试使用Break,但它似乎只是在循环遍历所有插槽后才停止循环,而不仅仅是发现它的第一个带有箭头的插槽。

我只学习了几个月的编程知识,所以我可能错过了一些很明显的东西,我将不胜感激!

谢谢。

解决方法

感谢您对此的帮助,现在我已经解决了。你是正确的,休息正是需要的。问题是我在代码的前面有另一个for循环,我也需要添加一个中断。再次感谢!