Всегда ли значение Time.time, вызываемое в Start, равно единице, вызванной в первом вызове Update? - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу знать, гарантированно ли значение Time.time, вызванное при первом вызове Update, равным значению, вызванному в Start, следующим образом.

public class Common : MonoBehaviour
{
    private float t;
    void Start()
    {
        t = Time.time;
        Thread.Sleep(5000);
    }

    void Update()
    {
        Debug.Log($"{t == Time.time }");    
    }
}

Я делаю несколько попыток и получаю почти идентичные результаты следующим образом. Удивительно, но значения в первых двух вызовах Update также идентичны значениям, вызванным в Start.

enter image description here

Вопрос

Гарантируется ли значение Time.time в Start равным единице, вызванной при первом вызове Update? Я спрашиваю об этом, потому что в моем реальном сценарии мне нужно знать это, чтобы избежать неожиданных результатов, которые я не могу дать прямо сейчас.

Редактировать

Даже я добавляю Thread.Sleep(5000) к Start, я все еще не замечаю никаких отличий.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Нет, это не так.

Start происходит перед первым кадром, а первый Update вызов - это первый кадр.

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

Проверьте Порядок выполнения скрипта

0 голосов
/ 27 апреля 2020

Нет, они не равны, может быть, в большинстве случаев вы получаете одни и те же результаты, но это не гарантируется каждый раз. Start и Update - две разные функции. Важно знать, что они не вызываются точно друг за другом. Так много вещей могут повлиять на их время звонка. В по этой ссылке вы можете увидеть эти функции, так что Тяжелая физика, Количество анимаций, частота кадров графики c и ... могут различаться в разных аппаратных средствах.

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