很奇怪的浮点行为,没有正确检查

时间:2015-07-24 16:10:59

标签: c# unity3d floating-point

正在发生一些非常奇怪的事情,我正在尝试检查名为fireDelay的浮点数是否低于0.根据我编程的情况,它是。但似乎它不起作用。 我做了一个布尔检查,写在Debug.Log中,以及在调试日志中写入的实际浮点值。

public float fireDelay = 0.0f;

public void PrimaryFire(RaycastHit hit)
    {
        bool fireDelayLower = fireDelay <= 0.0f;
        Debug.Log("fireDelayLower = " + fireDelayLower);
        Debug.Log(fireDelay);

        if (fireDelay <= 0.0f)
        {
            Debug.Log(pickupOwner.GetComponent<AudioSource>(), pickupOwner);
            this.fireDelay = fireRate;
            pickupOwner.GetComponent<AudioSource>().PlayOneShot(gunSound[Random.Range(0, gunSound.Length - 1)]);
        }

        if (currentClip <= 0)
        {
            DryFire();
            return;
        }
    }

void Update()
{
    if (fireDelay > 0.00f)
        fireDelay -= Time.deltaTime;
}
  

输出:
  fireDelayLower = False
  0.3

更新被正确调用,我有一个Debug.Log并更新它。 但即便如此,fireDelay -= Time.deltaTime;也没有被调用。因为某些原因fireDelay > 0.00f是假的。 到底发生了什么,我该如何解决?

0 个答案:

没有答案