NLDClient-yudde/ProjectNLD/AI_Gen_Doc/Finish/P0-02_RemoveBuffById去除lambd...

1.1 KiB
Raw Permalink Blame History

P0-02: Buff 系统 — RemoveBuffById 去除 lambda 分配 已完成

优先级: P0
影响范围: GamePlay/Buff/UnitBuffManager.cs
问题类型: GC 分配lambda 委托)
状态: 已完成

问题描述

RemoveBuffById() 使用 List.Find(buff => ...) 查找 Buff每次调用都会分配一个新的委托对象。

问题代码位置

文件: Assets/Code/Scripts/GamePlay/Buff/UnitBuffManager.cs
行号: 214

var findBuff = totalBuffList.Find(buff => buff.configData.ID == buffId);

修改方案

List.Find + lambda 替换为普通 for 循环查找:

BaseBuff findBuff = null;
for (int i = 0; i < totalBuffList.Count; i++)
{
    if (totalBuffList[i].configData.ID == buffId)
    {
        findBuff = totalBuffList[i];
        break;
    }
}

验证方法

  1. 编译通过
  2. 通过 Buff ID 移除 Buff 功能正常

完成记录

totalBuffList.Find(buff => buff.configData.ID == buffId) 替换为普通 for 循环查找,消除 lambda 委托分配。