Kentavr16
@Kentavr16
long cold winter

Как использовать Time.deltaTime в качестве таймера?

Осиливаю обучение от юнити. Встретил задачу, в которой предлагается перриодически менять текст с помощью Time.deltaTime. По гайдам в интернете пришел к чему-то вроде:
void Update()
    {

        if (CurrentText >= TextToDisplay.Count)
        {
            CurrentText = 0; // индекс для листа с фразами которые нужно менять
        }
        TimeToNextText -= Time.deltaTime*1; // соответственно отнимаем время 
        if (TimeToNextText ==0)
        {
            Text.text = TextToDisplay[CurrentText];
            TimeToNextText = 2f;
        }
        CurrentText++;// добавляем индекс

    }

Ииии соответственно не наботает. В консоли нет ошибок но текст не меняется. Понимаю что проще через корутины, но интересует - работает ли это через дельтатайм? Для меня концепция "отнимать время" пока звучит бредово, но в гугле многие ссылаются на этот способ счетчика. Заранее спасибо.
  • Вопрос задан
  • 306 просмотров
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Unity
Ну, концепция правильная, а ошибка классическая.

Time.deltaTime - float, время между кадрами. Нифига не целое и не равное единице.
Допустим у вас TimeToNextText равен 5. Частота кадров - 3 кадра в секунду. Значит Time.deltaTime = 1/3 = 0.33333
И как вы не вычитайте в каждом кадре это из 5, вы никогда РОВНО 0 не получите.
В общем ошибка в сравнении флоатов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы