我试图做类似的事情
public double number = 10000;
public double decreasing = 10;
public void Update()
{
number -= decreasing * Time.deltaTime;
if (number == 0)
{
decreasing = 0;
}
}
但是这不起作用。当它达到0时如何停止下降?
这是双精度数,是相当大的浮点数的形式。浮点数以其精度而闻名。像number == 0
这样的exact匹配在一个蓝月亮中发生一次。即使将其设置为一个值,也不能保证<>该值。这是浮点类型固有的,不可避免的属性:https://www.youtube.com/watch?v=PZRI1IfStY0或者从现在开始期望并使用<=检查,或者完全停止使用float。像这样的一些简单代码:
if(number <= 0)
number = 0;
将确保如果它降到0以下,它将被视为0。在此行之后,像number == 0
的精确匹配在某种程度上是可靠的。但是我的建议是完全停止使用浮点数。在此处将最后3位数字显示为“小数点”的int效果更好。