上一篇讲了击杀事件怎样触发 Buff,但EventKillMonster并不是在伤害计算时直接发送的。Demo 会先记录血量和击杀者,再由战斗模式统一确认死亡、清理状态、播放死亡动作,最后判断整波战斗是否结束。本篇只回答一个核心问题:怪物 HP 变成 0 以后,系统怎样安全地走完这条链路?
MyFramework:https://github.com/ZHOURUIH/MyFramework
塔防 Demo:https://github.com/ZHOURUIH/MyFramework_TDDemo
一、血量归零只是写入死亡结果
无论普通攻击还是持续伤害,最终都会通过CmdMonsterSetHP.execute()修改怪物血量:
clamp(ref hp, 0, monster.getMaxHP()); int lastHP = monsterData.mHP; monsterData.mHP = hp; if (monsterData.mHP <= 0 && attacker != null) { monsterData.mKillerGUID = att