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

Unity 2D:仅敌人血量归0销毁时加币,阻止场景切换触发

解决敌人销毁时仅击杀加金币的问题

方案一:添加击杀标记区分销毁原因

给敌人脚本增加一个布尔变量,标记是否是被玩家击杀导致的销毁,只有标记为真时才执行加币逻辑:

  1. 定义标记变量:
private bool isKilledByPlayer = false;
  1. 在处理敌人受伤的逻辑中(比如TakeDamage方法),当血量归0时设置标记并销毁:
public void TakeDamage(int damage)
{
    // 假设你有一个health变量存储敌人血量
    health -= damage;
    if (health <= 0)
    {
        isKilledByPlayer = true;
        Destroy(gameObject);
    }
}
  1. 修改OnDestroy方法(注意Unity生命周期方法首字母必须大写,否则不会触发):
void OnDestroy()
{
    if (isKilledByPlayer)
    {
        AddCoins(Coins);
    }
}

方案二:直接在击杀时执行加币(更简洁)

不需要依赖OnDestroy,直接在敌人血量归0的瞬间调用加币方法,再销毁敌人,从根源避免场景切换时的误触发:

public void TakeDamage(int damage)
{
    health -= damage;
    if (health <= 0)
    {
        AddCoins(Coins); // 击杀时立即加币
        Destroy(gameObject);
    }
}

注意:你原代码中的onDestroy是小写,Unity的生命周期方法要求驼峰式命名(OnDestroy),这个错误会导致方法无法被Unity正确调用,需要修正。

内容的提问来源于stack exchange,提问作者Vasil Kirilov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:40:30