为什么定时器1秒后就停止了

问题描述 投票:0回答:1
using System.Collections;

using UnityEngine;

public class Timer : MonoBehaviour
{

    public ZeitManager zeitmanager;

    public IEnumerator TimerDownSekunden()
    {
        if (zeitmanager.Sekunden == 0)
        {

            zeitmanager.SekundenText.text = "" + zeitmanager.Sekunden;

            StartCoroutine(TimerDownMinuten());

        }

        zeitmanager.Sekunden--;

        zeitmanager.SekundenText.text = "" + zeitmanager.Sekunden;

        yield return StartCoroutine("TimerDownSekunden");

    }

    public IEnumerator TimerDownMinuten()
    {

        zeitmanager.Minuten--;

        zeitmanager.MinutenText.text = "" + zeitmanager.Minuten;

        zeitmanager.Sekunden = 60;

        zeitmanager.SekundenText.text = "" + zeitmanager.Sekunden;

        yield return StartCoroutine("TimerDownSekunden");

    }

}

我有一个在脚本时间管理器中启动的按钮,它是一个从该脚本中调用 IEnumerator 的函数,它可以工作,但只能持续 1 秒,之后脚本停止我通过在每次运行时更新 TextMeshProUGUI 文本来检查它,我也使用时间管理器中的公共 int,我可以在 Unity 编辑器中看到它在第一次运行时有效,但之后就不再有效了

unityscript ienumerator
1个回答
0
投票
using System.Collections;

使用UnityEngine; 使用TMPro;

公共类ZeitManager:MonoBehaviour {

public int Sekunden;

public int Minuten;

public bool TimerLäuft;

public TextMeshProUGUI SekundenText;

public TextMeshProUGUI MinutenText;

public void LevelStart()
{

    TimerLäuft = true;

    StartCoroutine("TimerDownSekunden");

}

void Update()
{

    if (Minuten == 0 && Sekunden == 0)
    {

        TimerLäuft = false;

    }

    if (Sekunden == 0 && TimerLäuft == true)
    {

        Sekunden = 60;

        Minuten--;

    }

    SekundenText.text = "" + Sekunden;

    MinutenText.text = "" + Minuten;


}

public IEnumerator TimerDownSekunden()
{

    while(TimerLäuft == true)
    {

        Sekunden--;

        yield return new WaitForSeconds(1);

    }
}

}

我现在已将所有内容打包到脚本中并使其变得更简单,现在一切正常,我认为这是最简单的计时器

© www.soinside.com 2019 - 2024. All rights reserved.