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

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

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

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


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

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

СообщениеДобавлено: 23 сен 2015, 14:34
ilka
Т.е. в инспекторе всегда будет создаваться экземпляр этого класса, даже, если он null

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

У меня проверка if (c == null) не сработает?

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

СообщениеДобавлено: 23 сен 2015, 19:27
Iq51
ага, не сработает.

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

СообщениеДобавлено: 24 сен 2015, 11:31
ilka
Iq51 писал(а):ага, не сработает.

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

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

СообщениеДобавлено: 24 сен 2015, 16:22
Iq51
ilka писал(а):Ошибка где то у вас значит, сказать не могу так как не вижу полной картины.


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

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

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

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

       [Serializable]
       public class SomeClass {
               //...
       }