如何在Unity中进行倒计时

我目前正在努力进行倒数计时或递增计时,但我无法在正确的时间执行某些操作,主要是因为我的脚本存在缺陷。我的脚本不是很正确,我做到了,所以当它介于浮动和动作之间时,就会发生动作,并且动作和声音的定时会有所波动。

public float timeValue;

private void FixedUpdate()
{
    timeValue += Time.deltaTime;

    if(timeValue > 25.2 && timeValue < 25.4)
    {
        //Random Animation
    }
    if(timeValue > 26.2 && timeValue < 26.4)
    {
        //Sound Effect connected to Random Animation
    }
}

如您所见,当timeValue在这些浮点数之间命中时,它会不时变化,因为它不会每次都击中相同的浮点数。我希望有一个解决方案可以做到这一点。

评论
  • ksed
    ksed 回复

    您正在使用用于物理循环的FixedUpdate(),想要Update(),FixedUpdate()循环定时以特定的频率运行,并且可能会使deltaTime混乱。您也可以只使用Time.time来获取自应用程序启动以来的总时间。

    private void Update()
    {
        timeValue += Time.deltaTime;
    
        if(timeValue > 25.2 && timeValue < 25.4)
        {
            //Random Animation
        }
        if(timeValue > 26.2 && timeValue < 26.4)
        {
            //Sound Effect connected to Random Animation
        }
    }
    

    您还可以通过使用Time.time来获取自应用程序启动以来的总时间,从而简化代码。

    private void Update()
    {
    
        if(Time.time > 25.2 && Time.time < 25.4)
        {
            //Random Animation
        }
        if(Time.time > 26.2 && Time.time < 26.4)
        {
            //Sound Effect connected to Random Animation
        }
    }