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

Answer

Короче, все что мне удалось найти - это то, что все скрипты, в которых вручную не устанавливается "приоритет" срабатывания, по умолчанию получают "default" позицию в очереди. Что значит, что все они якобы будут срабатывать рандомно относительно друг друга. На деле, у меня не получилось это ощутить. (возможно инфа неактуальна)
Касательно того, что скрипты срабатывают "снизу вверх". Это полная чушь. Оказывается новодобавленный скрипт (к объекту на сцене) почему-то получает первое место в очереди. После перезагрузки Unity это фиксится. (Немного бесит это багающее говно)
Из всего, что я смог обнаружить и протестировать, я могу лишь сделать вывод: скорее всего при компиляции кода с позицией "default", его позиция в очереди определяется тупо исходя из начинки самого кода. Что там и как на что влияет мне лень разбираться. бессмысленно потраченное время

Views: 51

0
Голосов: 0
ANSWER
Diabfall 488645 - 3 days ago (изм. )
0
Голосов: 0
Короче, все что мне удалось найти - это то, что все скрипты, в которых вручную не устанавливается "приоритет" срабатывания, по умолчанию получают "default" позицию в очереди. Что значит, что все они якобы будут срабатывать рандомно относительно друг друга. На деле, у меня не получилось это ощутить. (возможно инфа неактуальна)
Касательно того, что скрипты срабатывают "снизу вверх". Это полная чушь. Оказывается новодобавленный скрипт (к объекту на сцене) почему-то получает первое место в очереди. После перезагрузки Unity это фиксится. (Немного бесит это багающее говно)
Из всего, что я смог обнаружить и протестировать, я могу лишь сделать вывод: скорее всего при компиляции кода с позицией "default", его позиция в очереди определяется тупо исходя из начинки самого кода. Что там и как на что влияет мне лень разбираться. бессмысленно потраченное время
0
Голосов: 0
ofeerist 488664 - 3 days ago
0
Голосов: 0
Именно из-за того что поведение почти невозможно предугадать, рекомендуется не завязывать никакую логику на последовательностях awake, или если завязывать, то делать свою систему инициализации