Сериализация и null

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Сериализация и null

Сообщение Iq51 22 сен 2015, 17:39

Давно уже спотыкаюсь об эту проблему, так и не нашёл простого решения.
Есть Serializable класс:

Синтаксис:
Используется csharp
[Serializable]
public class SomeClass {
   // ...
}


Юнити не поддерживает сериализацию null для таких классов. Т.е. в инспекторе всегда будет создаваться экземпляр этого класса, даже, если он null.
Пока решил это созданием в классе "нулевого" экземпляра static SomeClass Null = new SomeClass() и присваиваю ссылку на него всем нулевым объектам.
Как вы решаете подобное?
Iq51
UNIт
 
Сообщения: 64
Зарегистрирован: 19 окт 2011, 02:34

Re: Сериализация и null

Сообщение ilka 23 сен 2015, 14:34

Т.е. в инспекторе всегда будет создаваться экземпляр этого класса, даже, если он null

тоесть если я напишу
Синтаксис:
Используется csharp
public SomeClass c = null;

У меня проверка if (c == null) не сработает?
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

Re: Сериализация и null

Сообщение Iq51 23 сен 2015, 19:27

ага, не сработает.
Iq51
UNIт
 
Сообщения: 64
Зарегистрирован: 19 окт 2011, 02:34

Re: Сериализация и null

Сообщение ilka 24 сен 2015, 11:31

Iq51 писал(а):ага, не сработает.

Ошибка где то у вас значит, сказать не могу так как не вижу полной картины.
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

Re: Сериализация и null

Сообщение Iq51 24 сен 2015, 16:22

ilka писал(а):Ошибка где то у вас значит, сказать не могу так как не вижу полной картины.


Попробуйте запустить этот код: сначала не выделяя в инспекторе объект, на котором висит скрипт, а потом выделив, чтобы сработала сериализация :

Синтаксис:
Используется csharp
        public SomeClass c;

        void Start () {
                c = new SomeClass();
                c = null;
        }

        void Update(){
                if(c == null)
                        Debug.Log("Null");
        }

       [Serializable]
       public class SomeClass {
               //...
       }
Iq51
UNIт
 
Сообщения: 64
Зарегистрирован: 19 окт 2011, 02:34


Вернуться в Editor

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1