С какой частотой обновляется метод

145
30 июня 2022, 20:10

С какой частотой будет обновляться метод в юнити, если его не вывести в FixedUpdate() и Update()

К примеру, скрипт:

void Start()
{
   DoSomething();
}
public void Update()
{
  //some code;
}
private static void DoSomething()
{
   bool workWhile = true;
   int iteration = 0;
   while(workWhile)
   {
      iteration++;
      if(iteration == 40)
      {
         workWhile = false;
      }
   }
}

В какой момент выполнения кода и с какой частой будет обновляться выполнение iteration и будет ли оно привязано к Update?

Answer 1

Весь код, который должен быть выполнен в одном кадре, выполняется в одном кадре. Если его слишком много и для его выполнения требуется много времени, игра жертвует FPS ради выполнения всего кода кадра. Проще говоря, виснет на X времени.

Start() ПОЛНОСТЬЮ выполняется в первом кадре, после появления объекта. Так как в старте вызывается DoSomething(), то он тоже выполнится в одном кадре полностью. В вашем случае серьезного зависания игры не произойдет, потому что 40 простейших итераций цикла выполнятся быстро, но если вы попробуете вместо 40 поставить, ну, не знаю, миллиончик, то появиться небольшая задержка. Новый кадр не наступит, пока не выполнится весь код из предыдущего. Если вы в методе doSomething сделаете что-то подобное:

private static void DoSomething()
{
   bool workWhile = true;
   while(workWhile)
   {
      // Какой-то код
   }
}

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

...будет ли оно привязано к Update?

Повторюсь, что выполнение кода не связано с Update, а выполняется в одном кадре.

FixedUpdate() и Update()

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

Подробнее можно почитать тут

READ ALSO
Как выгрузить изображение из postgres в picturebox c#

Как выгрузить изображение из postgres в picturebox c#

Я пытаюсь получить изображение из postgresql с помощью C #

134
.NET 5 Указание директивы в разных файлах

.NET 5 Указание директивы в разных файлах

Изначально, я шёл сюда за ответом на вопрос "NET 5 не видит SqlConnection"

148
Post запрос на Steam (С#)

Post запрос на Steam (С#)

Хочу написать бота, с разным функционалом, для своих нужд для SteamОдна из функций это спам в этот Топик

228
Создание объекта в другом домене

Создание объекта в другом домене

Изучаю C# по книге Рихтера и застопорился на создании объекта в соседнем доменеКопипаст кода из книги не выполняется

131