Unity C#中敌人生命值未归零却触发死亡日志的异常问题
问题解决:敌人生命值未归零却触发死亡日志
问题出在Enemy脚本的TakeDamage方法里,这行代码是关键错误:
if (currentHealth <= 0);
末尾的分号让C#认为这个if条件判断已经结束,后面的{ Die(); }会被当成独立的代码块——不管currentHealth的值是多少,每次调用TakeDamage都会无条件执行Die(),所以哪怕敌人生命值还有60,死亡日志也会触发。
修正后的代码
public void TakeDamage(int damage) { currentHealth -= damage; // Play hurt animation Debug.Log($"Enemy current health: {currentHealth}"); // 可选:添加调试日志查看生命值变化 if (currentHealth <= 0) // 去掉末尾的分号 { Die(); } }
修正后,只有当currentHealth确实≤0时,才会调用Die()方法,完全符合预期逻辑。
内容的提问来源于stack exchange,提问作者Showblown
相关产品推荐
相关产品推荐

