如果同一个柜子拥有相同的物品,你可以考虑在循环之前先对柜子中的物品进行去重处理。这样可以避免重复操作相同的物品。
以下是一种可能的优化方案:
let collectedItem = null;
for (let index = 0; index < 12; index++) {
let children = this["shopBoard" + index].children;
for (let i = children.length - 1; i >= 0; i--) {
let itemN = this["shopBoard" + index].children[i];
let nodeContainerId = itemN.getComponent(containerItem).containerId;
if (containerId == nodeContainerId) {
// 如果已经收集到了相同的物品,则直接跳过
if (collectedItem && collectedItem === itemN) {
continue;
}
if (collectAll) {
return;
} else {
collectAll = this.autoAddContainerToPlayer(tarPlayer, itemN);
collectedItem = itemN; // 记录已经收集到的物品
break;
}
}
}
}
通过引入collectedItem变量来记录已经收集到的物品,在后续循环中跳过相同的物品,以避免重复操作。这样就能够优化代码逻辑,确保每个柜子中只会被处理一次。
内容由零声教学AI助手提供,问题来源于学员提问




