#c_sharp #unity3d
Есть GameObject. В нем 2 компонента: MainLevelSetting и RespawnController. Классе MainLevelSetting: void Start () { Debug.Log( "Start MainLevelSetting" ); GetComponent().RespawnHero(); } И в RespawnController: void Start () { Debug.Log( "Start RespawnController" ); } public void RespawnHero(){ Debug.Log( "RespawnHero" ); } Поле запуска, в консоле отоброжается: "Start MainLevelSetting" "RespawnHero" "Start RespawnController" То есть сначала вызывается метод класса, а потом только метод инициализируется! Где ошибка и как исправить?
Ответы
Ответ 1
Нашел статью про порядок событий http://habrahabr.ru/post/147315/ и понял что я заблуждался! Start вызывается не при инициализации класс( я думал что это аналог конструктора из С++ ), а До первого обновления кадров Start: вызывается перед прорисовкой первого фрейма, только если сценарий определён. А (может не совсем правильно выражусь) аналог является функция: Первая загрузка сцены Эти функции вызываются, когда сцена стартует (по одному разу для каждого объекта в кадре). Awake: Эта функция всегда вызывается до начала любых функций, а также сразу после инициализации префаба. То есть то что нужно!! Но для моего случая больше подошло переделать методы. Так что думаю ответ на вопрос найден! =)
Комментариев нет:
Отправить комментарий