1Frosty
@1Frosty
Познаю новое

Как сделать обратный таймер с минутами?

Доброго времени суток. Хочу сделать обратный таймер в игре, с минутами, такого вида: 01:30 (минута:секунды).
Сам таймер в секундах получается простейшим способом сделать вот так:
public float timer = 90f;

void Update()
{
timer -= Time.deltaTime;
     if(timer <= 0.0f)
     {
              Debug.Log("The END");
     }
}

Но не могу понять, как мне сделать минуты, если допустим 90 секунд в таймере, или 120, именно такого вида: 01:30 (01 - минуты, 30 секунды).
Подскажите пожалуйста, заранее спасибо большое.
  • Вопрос задан
  • 3481 просмотр
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Для такого случая лучше использовать DateTime и TimeSpan вместе с шаблонами форматирования:
using System;
using UnityEngine;

public class TimerTest : MonoBehaviour
{
    public float timer = 90;

    private DateTime timerEnd;

    private void Start()
    {
        timerEnd = DateTime.Now.AddSeconds(timer);
    }

    private void Update()
    {
        TimeSpan delta = timerEnd - DateTime.Now;
        Debug.Log(delta.Minutes.ToString("00") + ":" + delta.Seconds.ToString("00"));
        if (delta.TotalSeconds <= 0)
        {
            Debug.Log("The END");
        }
    }
}

Важно помнить, что при таком способе не будет учитываться Time.timeScale, если он вам нужен, то можете аналогичным образом вместо DateTime сохранять float со временем, но тогда минуты придётся вычислять самостоятельно. Плюсовать deltaTime в апдейте не советую. Теоретически ещё можно использовать Timer, но я слышал, что он работает не на всех платформах.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы