试图将一个数字增加1,但却得到7



我是新手,所以我知道如何增量的唯一方法是+=和++

如果在电脑附近出现错误,很抱歉,但稍后会更正。

public string variable1
public int variable2
if(variable1.Contains ("24:59")
variable2 += 1
  1. 这应该返回1,但返回7
  2. 变量1是我发现的时钟脚本,它在0:00开始,在24:59重新启动
  3. 变量2表示时钟达到24:59的日期,它应该递增1,因此它应该是第1天、第2天、第3天
  4. 我的问题似乎是24:59是真的,足够长的时间将值增加到7而不是1

我希望这个If语句在运行其函数1次后停止

public bool testBool = false;  
public int testInt;         
if (testBool == true)         
{             
testInt++;  
}

我的主要问题是如何停止一个if语句,该语句保持真实的时间比预期的要长

由于您的问题用Unity3D标记,我假设此代码在Update((方法中运行。我认为正在发生的事情是,你的代码每秒至少运行7次(希望更多(,每次检查为真,你的计数器就会增加一次。

有几种方法可以解决这个问题。一种方法是使用DateTime数据类型,这样一来就不需要首先执行任何操作。

另一种方法是保存签入_previousTime变量的时间,然后查看新时间和旧时间之间的差异。

private string _lastTime;
private string time;
private string rollOverCounter = 0;
private const string rolloverTime = "23:59"
public void Update(){
const wasRollingOver = string.Equals("23:59", _lastTime);
const isRollingOver = string.Equals("23:59", time);
if(wasRollingOver && !isRollingOver){
rollOverCounter++;
}
_lastTime = time;
}

有更高性能、更不容易出错的方法来实现这一点,但我认为这个解决方案可读性很强,可以回答你的问题
如果您看到性能受到影响(因为您将在每帧中都这样做(,或者遇到用字符串表示时间的限制,我建议您考虑使用更合适的数据类型(如日期时间或带某些除法的整数(来解决此问题。

最新更新