Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Порядок выполнения функций

#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: Эта функция всегда вызывается до начала любых функций, а также сразу после инициализации префаба. То есть то что нужно!! Но для моего случая больше подошло переделать методы. Так что думаю ответ на вопрос найден! =)

Комментариев нет:

Отправить комментарий