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

Unity中销毁双硬币后count值无法累加至2的问题求助

问题排查与修复方案

核心错误点

  • 变量作用域错误:把count定义在Update()方法内部,每帧执行Update时都会重新将count初始化为0,之前的累加值完全无法保留。必须将count放到类的成员变量区域(方法外部)。
  • 赋值运算符误用:count =+1是赋值操作,会直接把count设为1,而非累加。正确的累加写法是count += 1。
  • 条件逻辑缺陷:使用else if会导致:若第一个条件(coin == null)成立,就不会再检查第二个条件(coin2 == null)。即使两个硬币都销毁,也只会触发一次计数。同时原代码每帧都会重复检查,会导致count无限制增长,必须添加标记避免重复计数。

修正后的代码

// 将变量移到类的成员区域,确保值能跨帧保留
private float count = 0;
private bool hasCountedCoin1 = false;
private bool hasCountedCoin2 = false;

void Update()
{
    // 检查第一个硬币:未计数且已销毁时,累加并标记
    if (coin == null && !hasCountedCoin1)
    {
        count += 1;
        hasCountedCoin1 = true;
    }
    // 检查第二个硬币:独立判断,避免互相影响
    if (coin2 == null && !hasCountedCoin2)
    {
        count += 1;
        hasCountedCoin2 = true;
    }
    // 计数达标后销毁门,并禁用Update避免重复执行
    if (count == 2)
    {
        Destroy(door);
        this.enabled = false;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:07:39