Unity 计时器在第一次调用时停止

本文关键字:调用 第一次 计时器 Unity | 更新日期: 2023-09-27 18:36:48

我创建了一个计时器事件,每当我的计时器达到设定的目标时,它就会触发。但是,当我第一次触发计时器时,它会达到一定的长度,然后停止。但是,如果我再次触发计时器,它会按预期工作,我不知道这是在哪里发生的。

有人可以看看我的计时器代码,看看这个问题可能在哪里?我已经搜索了一天,但无法确定它。

下面是我在主课上用计时器做某事的实例。为了清楚起见,省略了一些东西。

public float start_time;
public float look_at_time;
public float end_time;
private bool track_timer = false;
//this is called from a different class but acts as my start method
public void Setup()
{
    start_time      = 0;
    running_time    = 0;    
    ResetTimer();
}
void Update () 
{
    bool updateTimer = (track_timer && lastHitObject != null);
    Check(updateTimer);
            MyMethod();
}
void ResetTimer()
{
    start_time      = 0.0f;
    running_time    = 0f;
    track_timer     = false;
}
void MyMethod()
{
  if(argument 1)
  {
    if(argument 2)
    { 
       track_timer = false;
     }
  }
else 
   track_timer = false;
}
void Check(bool updateTimer)
{
    if(updateTimer)
    {
        start_time      += Time.deltaTime;
        running_time    += Time.deltaTime;
        if ( running_time >= end_time )
        {
            track_timer = false;
        }
    }   
    else
        end_time = Time.time;
}

Unity 计时器在第一次调用时停止

我真的不明白你在代码中做什么,试着简化它!您可以使用 Invoke 和当时的第二个参数,也可以执行以下操作:

class Timer : MonoBehaviour
{
    public float SecondsToWait;
    private float timeCounter;
    void OnEnable() {
        timeCounter = 0;
    }
    void Update() {
        timeCounter += Time.deltaTime;
        if(timeCounter >= SecondsToWait)
        {
            enabled = false; //Disable this object
            doMyMethod();
        }
    }
    private void doMyMethod() {
        Debug.Log("Doing stuff!");
    }
}

如果您想停止它,只需禁用即可。如果要运行它,只需再次启用它。