2017-02-21 19 views
1

В последнее время я использую Unity3D, и вскоре я обнаружил несколько тем в Интернете, которые используют событие OnMouseUp намного медленнее, чем проверка щелчков мыши на функции update(). Может кто-нибудь объяснить, почему?Unity3d onSomeEvent() vs update() performance

Это также относится к другим функциям, таким как OnTriggerExit2D и другие? В качестве шаблона проектирования я должен полностью отказаться от функций on() и получать только события Update()?

ответ

1

Я предпочитаю ни один из них, но, если возможно, используйте систему «Новый» (начиная с версии 4.6) Unity Event. Короче, вам нужно реализовать соответствующий интерфейс обработчика, например, IPointerClickHandler.

Я рекомендую ознакомиться с учебниками по событиям, например UI Events and Event Triggers. Обратите внимание, что, хотя этот урок сосредоточен на 2D, вы также можете использовать систему событий в 3D. Вам просто нужно добавить Raycaster на камеру.

1

Согласен с предыдущим ответом, но по причине того, что функции «Вкл.» Намного более неэффективны, заключается в том, как они функционируют.

Как единство знает, что произошло событие OnMouseUp? Объект мыши должен иметь прикрепленный к нему обработчик событий, который знает, как запустить событие OnMouseUp. Кроме того, что-то нужно будет прослушать каждый отдельный кадр для этого события, а затем запустить требуемый код. Кроме того, функции OnEvent, как правило, очень разобщены, потому что теоретически вы можете иметь одно и то же событие в нескольких разных функциях/классах.

Я думаю, что метод обновления в целом - это более эффективный способ проверки, потому что вы сами справляетесь с этими проблемами.

tldr: Там больше накладные расходы, связанные с использованием "On" событий, а не в "Update"

+0

я нашел интересный блог на unity3d.com [10000 Update() вызовы] (https: //blogs.unity3d .com/2015/12/23/1K-обновление-вызовы /). По моему мнению, не имеет значения, является ли это «Update» или любым другим методом. В любом случае я полностью согласен с тем, что все эти методы OnDoSomething распространяются по проекту и имеют тенденцию к возникновению побочных эффектов или проблем с производительностью – Kay

 Смежные вопросы

  • Нет связанных вопросов^_^