Время неправильно обновляется в Unity Inspector

Когда я запускаю игру, инспектор Unity обновляется каждые несколько секунд, но totalTimeElapsed увеличивается только на 0,1 секунды. Я пробовал подобное с totalTimeElapsed += Time.deltaTime, но с тем же результатом.

Как узнать общее время с начала игры?

float totalTimeELapsed = 0;
int dayCount = 0;

private void Update()
{
    totalTimeElapsed = Time.time;
    dayCount += 1;

    AFunctionTakingLotsOfTime();
}

Что должно произойти? Что делают BeginDay, MidDay и EndDay? Что вы имеете в виду под only increments in a series of 0.1 seconds? Из документы: This is the time in seconds since the start of the game., а также Try to avoid regular (frame) use of Time.time. It is more intended to supply the time the game has been running, and not time per frame. .. так чего вы на самом деле хотите достичь?

derHugo 11.03.2019 07:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
401
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

float totalTime = 0f;

// Update is called once per frame
void Update () {

    totalTime += Time.deltaTime;
}

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

Вы также можете знать, что вызов обновления происходит один раз за кадр, т.е. если вы работаете со скоростью 60 кадров в секунду, обновление будет вызываться 60 раз в эту секунду. Вместо этого вы можете попробовать FixedUpdate, который обновляется с интервалами в реальном времени.

which takes you current FPS into account а не с точностью до наоборот? Update вызывается каждый кадр, а FixedUpdate вызывается с фиксированными интервалами в реальном времени независимо от FPS.
derHugo 11.03.2019 07:56

Я пробовал это, но это не сработало для функций, которые занимают много времени.

Hyrial 11.03.2019 08:13
Ответ принят как подходящий

Потому что AFunctionTakingLotsOfTime() занимает много времени, вам нужно Time.realtimeSinceStartup

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

В качестве альтернативы вы можете использовать DateTime.

Обратите внимание, что оба не будут затронуты такими вещами, как шкала времени, и вы можете захотеть изменить свою функцию, чтобы она была менее интенсивной, например, вычисление только небольшого фрагмента любого данного вызова (или с помощью сопрограммы) или путем разделения метода на Тема работы.

Другие вопросы по теме