在 IF 语句中将布尔值更改为 false 后计时器不会停止



我遇到了这个奇怪的问题。当我调用stopTimer((时,它会更改布尔,但UpdateTime仍在工作,计时器正在运行。一切正常,但计时器不会停止。

public float elapsedTime;
public float startTime;
public bool stopTimer = false;
private bool keepTiming = true;

void Start()
{
startTime = Time.time;
}
void Update()
{
if(keepTiming)
{
UpdateTime();

}else{Debug.Log("Timer has stopped");}
if(stopTimer)
Debug.Log(StopTimer());
}
public void UpdateTime()
{
elapsedTime = Time.time - startTime;
float t = Time.time - startTime;
string minutes = ((int) t/ 60).ToString();
string seconds = (t % 60).ToString("f2");

timeText.text = minutes + ":" + seconds;

}
float StopTimer()
{
keepTiming = false;
return elapsedTime;
}
}

它通过向keepTiming布尔添加static来工作。我真的不明白为什么,但它起了作用。

最新更新