DestroyImmediate
Господа, у меня снова вопрос из серии "Не фигню ли я делаю?".
В-общем, на меня напала блажь, и я решил видеть прямо в редакторе результаты действия моего компонента при помощи [ExecuteInEditMode]. Компонент у меня создаёт в OnEnable несколько gameObject'ов, которые свистят и пердят определённым образом. Так как юнити в редакторе делает OnDisable/OnEnable каждый раз, как я вношу правки в скрипт, они у меня по OnEnable плодятся и плодятся. Посему я стал "подтирать за собой" в методе OnDisable, при помощи Destroy уничтожая наплодившуюся братву и освобождая место для новой. Тут меня ждал сюрприз: в редакторе Юнити не хочет работать Destroy, вместо него рекомендуют примернять DestroyImmediate: Цитата:
Цитата:
PHP код:
|
Ответ: DestroyImmediate
да вроде всё верно, просто Destroy может откладываться на попозже для уменьшения лага по-моему
|
Ответ: DestroyImmediate
Mr_F_ правильно сказал, Destroy выполняется не мгновенно. На скриптах объектов срабатывают события OnDisable и OnDestroy в конце кадра. Так же в Destroy можно передать задержку, если нужно (она по умолчанию равна нулю).
|
Ответ: DestroyImmediate
В-общем, оказалось, что теперь в редакторе при OnDisable скрипт какает вот этим:
Цитата:
|
Ответ: DestroyImmediate
Как вариант или как костыль можно твои создаваемые объекты схоронить в массиве/листе, и создавать только если они еще не созданы иначе обновить позицию, стейты и тд. Эдакий pool объектов сделать.
|
Ответ: DestroyImmediate
Цитата:
|
Ответ: DestroyImmediate
Можно наверное вместо удаления пометить объект как ненужный...
PHP код:
|
Часовой пояс GMT +4, время: 06:58. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot