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
相关产品推荐
相关产品推荐

