В чем разница между добавлением метода() в качестве последнего оператора в обновлении и использованием функции LateUpdate()?

#unity3d

Вопрос:

Я не могу понять вариант использования LateUpdate() здесь. Если LateUpdate() это называется после Update() , то в чем разница между двумя приведенными ниже наборами кодов:

Первый набор кода

 void Update(){
    <some code>
    <further code>
    a();
}
 
void a(){
    <some code for a>
}
 

Второй набор кода

 void Update(){
    <some code>
    <further code>
}
 
void LateUpdate(){
    <some code for a>
}
 

Являются ли оба приведенных выше кода одинаковыми или есть ли какая-либо разница/ преимущества при использовании LateUpdate() вместо простого вызова метода в качестве последнего оператора update() ?

Ответ №1:

Функция LateUpdate вызывается после вызова всех функций обновления. Поэтому, если у вас есть 15 сценариев с функцией обновления и один с функцией LateUpdate-LateUpdate в этом сценарии не будет выполняться до тех пор, пока не будут вызваны остальные 15 обновлений. Таким образом, разница между вашими двумя примерами заключается в том, что в первом случае a() выполняется сразу же как часть этого вызова обновления. Во втором, <some code for a> не будет выполняться, пока не будет запущен каждый сценарий с функцией обновления.

Ссылка https://docs.unity3d.com/ScriptReference/MonoBehaviour.LateUpdate.html