Для начала у меня вопрос, почему в юнити на столько тупые люди? В чем логика реализации OnDisable и OnDestroy??
Допустим у меня есть GameObject - страница магазина, мне надо в OnEnable и OnDisable включать доп. элементы. То есть логически строим цепочку, когда включается объект и выключается я делаю доп. обработки.
НО почему так тупо сделано что при OnDestroy срабатывает OnDisable ?? Это просто маразм.
Получается что когда уничтожается сцена / объект, он всегда производит обработку OnDisable и делаем там вычисления. То есть это абсолютно бесполезные вычисления в момент уничтожения объекта.
Почему нельзя была сделать по человечески? Тебе нужно выключение объекта, суй код в OnDisable , нужно уничтожение суй OnDestroy .
Слава богу что у них хватило ума при уничтожении не вызывать Awake, Start, OnEnable )))))
Или я просто тупой наверное? Как вы это обходите? Речь не про завершение игры.
Не надо просто оперировать событиями юнити на уровне игровой логики.
OnDestroy/OnDisable нужны чтобы оперировать состоянием объекта как сущности движка, но не как игровой сущности.
Если вам нужно уничтожить лампочку - вызовите у нее СВОЙ метод Destroy.
Или делать более глобально, делать новый класс (например MyMonoBehaviour) который будет от MonoBehaviour, где добавить Show() Hide() и везде пихать MyMonoBehaviour с вызовом Show() Hide() ? Таким образом я познаю дзен? Но беспокоит лишнее наследие (вместо MonoBehaviour -> MyMonoBehaviour) тут тоже нагрузка лишняя будет
Зачем скрипт реагирует на OnDisable?
Не делайте так. Делайте свой метод Disable, в котором будете вызывать все что и в OnDisable +отдельно дизейблить его.
@MishkaVNorky
если уж про пример с магазином и страницами говорить..
то почти наверняка страницы все однотипные.
а значит хорошим тоном было бы иметь одну страницу. анимацию перелистывания. и скрипты, которые управляют контентом/инициализируют содержимое))
никаких включить выключить страницы, а просто заменяет содержимое одной. на другую. с анимациями или без. свой адекватный метод инициализации.
представьте что создатели читалок или текстовых квестов делали бы на 1500 страниц 1500 объектов))))
а так вам верно указывают (@GavriKos)не путать мягкое с теплым.
у объекта своего делайте свои собственные инициализацию и отключение его) и каждый раз меняя страницы. дергайте методы.
и не надо ВСЕ страницы(опять же из вашего примера). вам нужно всего лишь отключить прошлые включенные и включить необходимые).(возможно таковых вообще по одной)
в общем архитектура, патерны и все такое)) какие-то чужие примеры поразглядывайте..со временем станет проще. удачи.
Denis Gaydak, суть вопроса была именно в том что странице вообще разные. Это как разные магазины, на одной машины, на другой скины герою и все по разному реализовано. Конечно если бы они были бы одинаковыми проблем бы не было.
Но решение я нашел для себя, через расширение MonoBehaviour