You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 14:40:28