как продолжить таймер обратного отсчета, пока игра закрыта? - PullRequest
0 голосов
/ 14 марта 2020

Я хочу сделать обратный отсчет вознаграждения, я использовал этот базовый c код для своего обратного отсчета, но он не работает на заднем плане или когда игра закрыта, что я должен сделать, чтобы продолжить работу, пока игра закрыта?

    float timeRemaining;
    public bool timerIsRunning; //  timeRemaining = Random.Range(15, 55);
    public Text timeText;

         void Update()
    {

        if (timerIsRunning)
        {
            if (timeRemaining > 0)
            {
                timeRemaining -= Time.deltaTime;
                DisplayTime(timeRemaining);
            }
            else
            {
                timeText.gameObject.SetActive(false);
                OpenBoxButton.SetActive(true);
                Debug.Log("Time has run out!");
                timeRemaining = 0;
                timerIsRunning = false;                                        

            }
        }
       void DisplayTime(float timeToDisplay)
    {
        timeToDisplay += 1;

        float minutes = Mathf.FloorToInt(timeToDisplay / 60);
        float seconds = Mathf.FloorToInt(timeToDisplay % 60);

        timeText.text = string.Format("{0:00}:{1:00}", minutes, seconds);
    }

1 Ответ

1 голос
/ 14 марта 2020

Не совсем уверен, как вы запутались - это тот же процесс, который вы делаете, когда смотрите на часы в школе и на работе и решаете, настало ли его домашнее время ..

Вы можете сохранить, когда таймер должен закончиться (сейчас + оставшееся время), или длительность, оставшаяся на таймере, и когда вы в последний раз смотрели.

Итак, когда вы выходите, у вас есть значение таймера - удерживаемое в некоторой форме единиц, позволяет go с секундами. float countdown = 7200f, то есть 2 часа.

Вы знаете, в какое время вы выходите из игры, как exittime = DateTime.UtcNow, и вы сохранили это в «где-то», как вам показалось хорошим.

Так что теперь вы Вы загружаете игру обратно таким образом, у вас есть StartTime = DateTime.UtcNow, разница между выходом и текущим временем, считайте время, которое вы сохранили, и обратный отсчет, и вычтите его из времени начала, с помощью diff = StartTime.Subtract(exittime), это возвращает Разница во времени. Затем вы можете сравнить разницу с вашим номером обратного отсчета. так что если diff.TotalSeconds >= countdown, у вас закончился таймер, иначе countdown - diff.TotalSeconds - это оставшаяся сумма. Или, если вы сохранили время окончания, totalseconds либо> 0, в этом случае у вас есть столько времени до go, либо 0 или меньше, что означает, что у вас закончился таймер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...