Инициализация поля до выполнения метода Awake

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Инициализация поля до выполнения метода Awake

Сообщение EagleOwle 12 авг 2017, 15:26

Приветствую.
Возникла такая праблема.
Хочу добавлять компоненты NetworkTransformChild через скрипт, но он, сразу отрабатывает метод Awake() и выдает ошибку на пустое поле Target.
Как можно назначить ссылку поду Target до выполнения метода Awake()?

Синтаксис:
Используется csharp
private void Awake()
    {
        NetworkTransformChild transformChild = gameObject.AddComponent<NetworkTransformChild>();
        transformChild.target = transform.GetChild(0);
    }
 
EagleOwle
UNIверсал
 
Сообщения: 493
Зарегистрирован: 02 янв 2015, 16:27

Re: Инициализация поля до выполнения метода Awake

Сообщение lawsonilka 12 авг 2017, 16:31

Перенести работу в метод Start
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: Инициализация поля до выполнения метода Awake

Сообщение EagleOwle 12 авг 2017, 16:51

Не помогает. перепробовал всякие варианты, ошибка все равно.
EagleOwle
UNIверсал
 
Сообщения: 493
Зарегистрирован: 02 янв 2015, 16:27

Re: Инициализация поля до выполнения метода Awake

Сообщение EagleOwle 13 авг 2017, 09:39

По прежнему актуально.
Ничего не помогает.
Уже пробовал выставлять приоритет скрипта в Script Execution Order, он там я не могу выставить класс NetworkTransformChild. Только свой скрипт.
И в Awake и в Start пробовал...
Ошибка NullReferenceException: Object reference not set to an instance of an object остается.

Может у кого есть идеи как иначе реализовать задачу.
Суть в том, что у меня есть персонаж и на нем, в процессе игры, могут меняться дочерние обьекты, чей трансформ нужно синхронизировать по сети. Мне нужно динамически добавлять нужное количество компонентов Network Transform Child на персонаж.
Заранее неизвестно, столько обьектов нужно синхронизировать.
Но при добавлении gameObject.AddComponent(typeof(NetworkTransformChild)) as NetworkTransformChild; выдает ошибку.

Синтаксис:
Используется csharp
//Debug
    private void Awake()
    {
        NetworkTransformChild NetworkTrans = gameObject.AddComponent(typeof(NetworkTransformChild)) as NetworkTransformChild;
        NetworkTrans.target = transform.GetChild(0);
    }
    //EndDebug
 
EagleOwle
UNIверсал
 
Сообщения: 493
Зарегистрирован: 02 янв 2015, 16:27

Re: Инициализация поля до выполнения метода Awake

Сообщение seaman 13 авг 2017, 22:37

NetworkTransform на том же объекте есть?
О как. Поискал. Обнаружил, что это общая проблема.
Два разных решения есть тут:
https://forum.unity3d.com/threads/unet- ... pt.390344/
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Инициализация поля до выполнения метода Awake

Сообщение EagleOwle 13 авг 2017, 23:04

Спасибо. Почитал... помогло.
EagleOwle
UNIверсал
 
Сообщения: 493
Зарегистрирован: 02 янв 2015, 16:27


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 25