From d4d470a7ed370484f29aebb2416f7766e64b1b75 Mon Sep 17 00:00:00 2001 From: walkpan Date: Sat, 20 Dec 2025 22:43:14 +0800 Subject: [PATCH] =?UTF-8?q?perf(hero):=20=E4=BC=98=E5=8C=96=E4=B8=B4?= =?UTF-8?q?=E6=97=B6buff=E7=9A=84=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E5=8D=87=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将forEach循环改为倒序for循环,避免在删除元素时重复查找index,减少不必要的操作 --- assets/script/game/hero/HeroAttrsComp.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index 36c7c8b0..b8eb0e0b 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -302,15 +302,13 @@ export class HeroAttrsComp extends ecs.Comp { // 更新临时型buff for (const attrIndex in this.BUFFS_TEMP) { const buffs = this.BUFFS_TEMP[attrIndex]; - buffs.forEach(buff => { + for (let i = buffs.length - 1; i >= 0; i--) { + const buff = buffs[i]; buff.remainTime -= dt; if (buff.remainTime <= 0) { - const index = buffs.indexOf(buff); - if (index > -1) { - buffs.splice(index, 1); - } + buffs.splice(i, 1); } - }); + } if (buffs.length === 0) { delete this.BUFFS_TEMP[attrIndex]; affectedAttrs.add(parseInt(attrIndex));