Если вам действительно нужно текущее реальное время, оно зависит не от времени запуска приложения, а от самого системного времени.
Тогда все, что вам нужно сделать, это просто использовать System.DataTime
и, в частности, DateTime.Now
как
using System;
public class Timer : MonoBehaviour
{
public Text m_text;
public void GetCurrentTime()
{
var time = DateTime.Now;
m_text.text = $"{time.Hour:00}:{time.Minute:00}";
}
}
Вам не понадобится весь остальной сценарий, потому что система сама запускает время.
Если вы хотите получить счетчик, я бы просто сделал что-то вроде
public class Timer : MonoBehaviour
{
public Text m_text;
public float Seconds;
public int Hours;
public int Minutes;
private void Start()
{
// in case you want to start the timer automatically
StartTimer();
}
public void StartTimer()
{
StopAllCoroutines();
StartCoroutine(TimerRoutine());
}
public void StopTimer()
{
StopAllCoroutines();
GetCurrentTime();
}
private IEnumerator TimerRoutine()
{
Seconds = 0;
Hours = 0;
Minutes = 0;
while(true)
{
Seconds += Time.deltaTime;
if(Seconds >= 60)
{
Seconds -= 60.0f;
Minutes += 1;
if(Minutes >= 60)
{
Minutes -= 60;
Hours += 1;
}
}
GetCurrentTime();
yield return null;
}
}
public void GetCurrentTime()
{
m_text.text = $"{Hours:00}:{Minutes:00}:{Seconds:00}"
}
}