Тема: DestroyImmediate
Показать сообщение отдельно
Старый 17.02.2016, 17:46   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
DestroyImmediate

Господа, у меня снова вопрос из серии "Не фигню ли я делаю?".

В-общем, на меня напала блажь, и я решил видеть прямо в редакторе результаты действия моего компонента при помощи [ExecuteInEditMode].

Компонент у меня создаёт в OnEnable несколько gameObject'ов, которые свистят и пердят определённым образом.

Так как юнити в редакторе делает OnDisable/OnEnable каждый раз, как я вношу правки в скрипт, они у меня по OnEnable плодятся и плодятся. Посему я стал "подтирать за собой" в методе OnDisable, при помощи Destroy уничтожая наплодившуюся братву и освобождая место для новой.

Тут меня ждал сюрприз: в редакторе Юнити не хочет работать Destroy, вместо него рекомендуют примернять DestroyImmediate:

Destroy may not be called from edit mode! Use DestroyImmediate instead.
Also think twice if you really want to destroy something in edit mode. Since this will destroy objects permanently.
Дважды подумав, как мне порекомендовал текст ошибки, я залез в справку по сабжу и прочитал там следующее:
You are strongly recommended to use Destroy instead.
Таким образом, я выдавил из себя вот что:

if (Application.isEditor)
            {
                
DestroyImmediate(go);
            }
            else
            {
                
Destroy(go);
            } 
Вопрос: не фигню ли я сделал? Почему редактор так упорно не хочет делать Destroy, какие причины? И если всё так уж однозначно (в редакторе сабж, не в редакторе Destroy), то почему оно не делается так автоматически?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (17.02.2016)