我如何制作一个类似funcrion的游戏,当变量达到0时触发?

问题描述 投票:0回答:1

我试图做类似的事情

 public double number = 10000;
 public double decreasing = 10;

 public void Update()
 {
     number -= decreasing * Time.deltaTime;

     if (number == 0)
     {
         decreasing = 0;
     }
 }

但是这不起作用。当它达到0时如何停止下降?

c# unity3d
1个回答
2
投票

这是双精度数,是相当大的浮点数的形式。浮点数以其精度而闻名。像number == 0这样的exact匹配在一个蓝月亮中发生一次。即使将其设置为一个值,也不能保证<>该值。这是浮点类型固有的,不可避免的属性:https://www.youtube.com/watch?v=PZRI1IfStY0或者从现在开始期望并使用<=检查,或者完全停止使用float。像这样的一些简单代码:

if(number <= 0) number = 0;

将确保如果它降到0以下,它将被视为0。在此行之后,像number == 0的精确匹配在某种程度上是可靠的。但是我的建议是完全停止使用浮点数。在此处将最后3位数字显示为“小数点”的int效果更好。
© www.soinside.com 2019 - 2024. All rights reserved.