Страница 1 из 1

странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 19:09
Valentinus
в Invoke-функции создаю GO. случайно выяснил что при этом у нового объекта OnAnimatorMove вызывается раньше чем Start.
а если создаю этот же GO из функции Start (другого объекта) - то все ок, сперва вызывается Start, а потом OnAnimatorMove

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 21:03
samana
Да, есть такое. Возможно это и не баг, но увидеть таблицу порядка вызовов методов MonoBeh-а мне не удалось.
Вы тогда создайте дополнительную булеву переменную, которую в старте меняйте. А в OnAnimatorMove выполняйте код, только если та булева переменная имеет нужное значение.

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 21:11
waruiyume
https://docs.unity3d.com/Manual/ExecutionOrder.html
Если это действительно проходит, то это баг и нужно написать багрепорт.

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 21:29
samana
waruiyume писал(а):https://docs.unity3d.com/Manual/ExecutionOrder.html
Если это действительно проходит, то это баг и нужно написать багрепорт.

Эта таблица конечно известна, но там нет ни слова про коллбеки OnAnimatorXXX :-s

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 21:56
waruiyume
Internal animation update- это тогда что?

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 22:04
samana
waruiyume писал(а):Internal animation update- это тогда что?

Да, заметил. Хм, никогда бы не догадался, что это события OnAnimator-а, спасибо за наводку.
Тогда получается, что это это баг Unity с преждевременным вызовом OnAnimatorMove.

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 22:51
Valentinus
samana писал(а):Да, есть такое. Возможно это и не баг, но увидеть таблицу порядка вызовов методов MonoBeh-а мне не удалось.
Вы тогда создайте дополнительную булеву переменную, которую в старте меняйте. А в OnAnimatorMove выполняйте код, только если та булева переменная имеет нужное значение.


по ней родимой и обнаружил :) в Start кешировал ссылку на компонент Animator, которую потом в OnAnimatorMove использовал. и увидел что при первом вызове выбрасывалось исключение NullObjectтруляля . ну и раскрутил ситуацию.
теперь просто добавил проверку на null

waruiyume писал(а):https://docs.unity3d.com/Manual/ExecutionOrder.html
Если это действительно проходит, то это баг и нужно написать багрепорт.


зашел в раздел "баг-трекер", но не нашел кнопки "написать"

Re: странный порядок вызова Start и OnAnimatorMove

СообщениеДобавлено: 12 май 2017, 23:03
waruiyume
1 Создайте новый проект в котором легко воспроизводится баг.
2 Help->Report a Bug