Что влияет на порядок выполнения кода в Unity? В каком порядке Unity отрабатывает код?
Создал пару скриптов с методом Awake(), и оказалось (спустя час танцев с бубном) что первым отработает скрипт, который находится "снизу". (Y)
В интернете ничего толкового про это не нашел, узнал только, что есть возможность в ручную выставлять приоритет (очередь).
Я правильно уловил суть (что код отрабатывается Last In First Out) или тут есть второе дно? Так только в юнити или в принципе с C#? Лень тестить :)

Принятый ответ

Короче, все что мне удалось найти - это то, что все скрипты, в которых вручную не устанавливается "приоритет" срабатывания, по умолчанию получают "default" позицию в очереди. Что значит, что все они якобы будут срабатывать рандомно относительно друг друга. На деле, у меня не получилось это ощутить. (возможно инфа неактуальна)
Касательно того, что скрипты срабатывают "снизу вверх". Это полная чушь. Оказывается новодобавленный скрипт (к объекту на сцене) почему-то получает первое место в очереди. После перезагрузки Unity это фиксится. (Немного бесит это багающее говно)
Из всего, что я смог обнаружить и протестировать, я могу лишь сделать вывод: скорее всего при компиляции кода с позицией "default", его позиция в очереди определяется тупо исходя из начинки самого кода. Что там и как на что влияет мне лень разбираться. бессмысленно потраченное время
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
13
2 года назад
Отредактирован Diabfall
0
Короче, все что мне удалось найти - это то, что все скрипты, в которых вручную не устанавливается "приоритет" срабатывания, по умолчанию получают "default" позицию в очереди. Что значит, что все они якобы будут срабатывать рандомно относительно друг друга. На деле, у меня не получилось это ощутить. (возможно инфа неактуальна)
Касательно того, что скрипты срабатывают "снизу вверх". Это полная чушь. Оказывается новодобавленный скрипт (к объекту на сцене) почему-то получает первое место в очереди. После перезагрузки Unity это фиксится. (Немного бесит это багающее говно)
Из всего, что я смог обнаружить и протестировать, я могу лишь сделать вывод: скорее всего при компиляции кода с позицией "default", его позиция в очереди определяется тупо исходя из начинки самого кода. Что там и как на что влияет мне лень разбираться. бессмысленно потраченное время
Принятый ответ
0
22
2 года назад
0
Именно из-за того что поведение почти невозможно предугадать, рекомендуется не завязывать никакую логику на последовательностях awake, или если завязывать, то делать свою систему инициализации
Чтобы оставить комментарий, пожалуйста, войдите на сайт.