Время не корректно обновляется в Unity Inspector - PullRequest
2 голосов
/ 11 марта 2019

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

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

float totalTimeELapsed = 0;
int dayCount = 0;

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

    AFunctionTakingLotsOfTime();
}

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

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

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

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

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

1 голос
/ 11 марта 2019
float totalTime = 0f;

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

    totalTime += Time.deltaTime;
}

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

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

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