【问题标题】:Trying to increment an number by 1 but getting 7 instead试图将一个数字增加 1 但得到 7
【发布时间】:2021-11-18 17:10:40
【问题描述】:

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

如果不是PC附近有错误,请见谅,稍后会更正。

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 语句

【问题讨论】:

  • 阅读“边缘敏感”与“电平敏感”触发器。为了检测新一天的时间翻转,更强大的设计将保存(记住)时钟的先前值,并检查新值是否小于先前值。每次翻转只会发生一次。
  • 您确定运行该代码的方法没有被多次调用吗?此外,您的代码存在语法错误且不完整。 if 语句肯定在方法中,对吧?
  • 顺便说一句,您的时钟可能会在 23:59 翻转。到达 24:59 是非常不寻常的,需要一天 25 小时。
  • 这段代码听起来像是在循环中运行,但我不需要这样做。您似乎在做一个简单的区别,知道值 #1 和值 #2 之间发生了多少天
  • 由于缺少实际时间码,代码不完整。我错了 24:59 我 23:59。但我在 1:00 测试它以节省时间。当它到达 1:00 时,它的真实时间足以增加 7 次,但如果我让它继续,它将在 11:00 从 7 增加到 13。我只是在寻找一种可以破坏 if 语句的方法,这样它就不会超过 1。但我稍后会添加代码。

标签: c# visual-studio unity3d


【解决方案1】:

由于您的问题被标记为 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;
}

有更多的性能和更不容易出错的方法来解决这个问题,但是这个解决方案非常易读并且我认为可以回答你的问题。
如果您看到性能影响(因为您将在每一帧都执行此操作)或者您遇到了使用字符串表示时间的限制,我建议您使用更合适的数据类型(如 datetime 或整数)来解决此问题一些部门。

【讨论】:

  • 我可能最好不要使用我的直接问题作为问题,而是寻求一种方法来阻止代码在更新功能为真时继续执行,我发现解决此问题的唯一方法是添加if 语句中的 bool,然后在 else 中将其重置。但我不喜欢这会变得多么混乱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2021-03-27
  • 2019-10-07
相关资源
最近更新 更多