C# 定时器不工作';在IF语句中将bool更改为false后不会停止
我有一个奇怪的问题。当我调用stopTimer()时,它会更改bool,但UpdateTime仍在工作,并且计时器正在运行。一切正常,但计时器不会停止C# 定时器不工作';在IF语句中将bool更改为false后不会停止,c#,unity3d,C#,Unity3d,我有一个奇怪的问题。当我调用stopTimer()时,它会更改bool,但UpdateTime仍在工作,并且计时器正在运行。一切正常,但计时器不会停止 public float elapsedTime; public float startTime; public bool stopTimer = false; private bool keepTiming = true; void Start() { startTi
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;
}
}
它的工作原理是向Keepting bool添加静态。我真的不明白为什么,但它起作用了。一般问题:你在某个时候操纵时间尺度吗?因为如果不是->你可以简单地使用instedi试试你的代码,它对我来说很好。您确定没有从其他源调用UpdateTime方法吗?您可以在visual studio上检查方法引用(右键单击并查找所有引用)@derHugo如果我更改时间刻度,我的方法是否会停止工作?@D.B VS code说只有一个引用,来自更新函数time Scaling是一个统一的东西,它不会修改秒表。这就是为什么德胡戈告诉你,如果你把时间刻度保持在1,就用秒表。你能检查对Keepting属性的引用吗?如果“static”修复了你遇到的问题,那么这个问题可能是由你的类有两个实例引起的。