我正在处理一个计时器,该计时器从设定的数字降低,当它达到零时,它应该退回并重新开始。
private int timer;
public int duration;
private bool timerRunning = true;
void Start()
{
StartCoroutine("TimeDown");
timer = duration;
}
void Update()
{
if (timer <= 0f)
{
timer = duration;
Debug.Log("Timer Reset");
timerRunning = false;
}
if (timerRunning == false)
{
StartCoroutine("TimeDown");
timerRunning = true;
}
Debug.Log("Timer: " +timer);
}
IEnumerator TimeDown()
{
while (true)
{
yield return new WaitForSeconds(1);
timer--;
}
}
我遇到的问题是使计时器循环。一旦发送"计时器重置"消息,它就不再运行计时器了。
我建议将您的逻辑大量简化为这样的东西:
private int timer;
public int duration;
void Start()
{
timer = duration;
StartCoroutine(TimeDown());
}
void Update()
{
// Nothing is needed each frame so Update() should be removed
}
IEnumerator TimeDown()
{
while (true)
{
if (timer <= 0)
timer = duration;
yield return new WaitForSeconds(1);
timer--;
Debug.Log("Timer: " + timer);
}
}
,还要确保在检查员中设置了duration
。