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 编辑器中看到它在第一次运行时有效,但之后就不再有效了
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);
}
}
}
我现在已将所有内容打包到脚本中并使其变得更简单,现在一切正常,我认为这是最简单的计时器