//creator是buff的创建者,用于计算动态伤害参数 public void addBuff(int buffTID, Unit creator = null) { Debug.Assert(mUnit.isServer); Log.i("addBuff id=" + buffTID, Log.Tag.Skill); TBBuff tb = TableMgr.single.GetData <TBBuff>(buffTID); if (tb == null) { return; } bool isReject = false; if (onMutex != null) { onMutex(mUnit, tb, ref isReject); } if (isReject) { return; } //挂载buff Buff buff = null; switch (tb.type) { case 0: buff = new LuaBuff(); break; default: return; } buff.mTB = tb; mBuffs.Add(buff); buff.init(mUnit); addBuff(buff); if (tb.mutex != 0) { onMutex += buff.onMutex; } }
public void update() { for (int i = mBuffs.Count - 1; i >= 0; --i) { Buff buff = mBuffs [i]; if (buff.isOver) { mBuffs.RemoveAt(i); if (buff.mTB.mutex != 0) { onMutex -= buff.onMutex; } decBuff(buff); buff.deinit(); } else { buff.update(); } } }