尝试将数字加1却得到7,如何让持续为真的if语句仅执行一次
解决方案
你可以通过新增状态标记变量的方式实现需求:用布尔变量记录当前轮次的满足条件的逻辑是否已经执行过,执行后上锁,直到条件失效后再解锁,等待下一次触发。
具体实现代码
// 原有变量 public string variable1; public int variable2; // 新增状态锁变量:默认false代表当前还未执行当日的日期计数 private bool _dayCounted = false; // 假设你的判断逻辑写在帧更新的Update方法中 void Update() { // 仅当时间为24:59且还未执行过当日计数时,才执行日期+1逻辑 if (variable1.Contains("24:59") && !_dayCounted) { variable2 += 1; // 执行后立刻上锁,避免同一轮24:59时段重复计数 _dayCounted = true; } // 24:59时段过去、时间重置后,解锁状态锁,等待下一次触发 else if (!variable1.Contains("24:59") && _dayCounted) { _dayCounted = false; } }
逻辑说明
- 首次进入24:59时段时,
_dayCounted为false,满足判断条件,日期加1后立刻将_dayCounted设为true,后续同一时段的所有判断都会因为锁的存在跳过计数逻辑,完全避免重复累加问题 - 当时间从24:59重置为0:00后,
24:59的匹配条件失效,此时自动重置_dayCounted为false,等待下一次24:59到来时再次触发计数 - 该方案仅新增1个布尔变量,没有用到复杂语法,符合你当前的语法掌握范围
内容的提问来源于stack exchange,提问作者Dustin
相关产品推荐
相关产品推荐

