1.1 KiB
1.1 KiB
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;
}
}
验证方法
- 编译通过
- 通过 Buff ID 移除 Buff 功能正常
完成记录
将 totalBuffList.Find(buff => buff.configData.ID == buffId) 替换为普通 for 循环查找,消除 lambda 委托分配。