• Сравнение скорости разных вариантов взаимодействия скриптов Unity3D

    Вступление


    Я не много знаю о тонкостях работы Unity, так как не занимаюсь этим профессионально, а как хобби. Обычно я просто изучаю все необходимое по мере надобности, поэтому эта статья ориентирована на таких же как я.


    Я, как наверное и любой кто начинал писать на юнити, быстро понял, что самого банального метода взаимодействия (через синглтоны-менеджеры, Find, GetComponent и т.п.) становится недостаточно и нужно искать новые варианты.


    И тут на сцену выходит система сообщений/уведомлений


    Порывшись в разных статьях я нашел несколько различных вариантов реализации этой системы:


    • На основе встроенного UnityEvents
    • С использованием классической для C# пары Event/Delegate
    • Еще один встроенный старый встроенный функционал SendMessage

    В большинстве статей практически нет информации по быстродействию тех или иных подходов, их сравнению и прочее. Обычно встречается только такое упоминание о быстродействии "Используйте SendMessage только в крайних случаях, а лучше не используйте вообще"


    Окей, у этого подхода, видимо, есть существенные проблемы со скоростью, но как тогда обстоят дела у других?


    Какой то вменяемой и упорядоченной информации на этот вопрос я не смог найти (может плохо искал) и решил выяснить это опытным путем, а заодно и опробовать эти подходы на практике, что очень помогло избавиться от каши в голове после прочтения десятков статей.


    Сравнивать решил эти 3 подхода, а так же обычный прямой вызов функции на объекте по его ссылке.
    И как бонус — посмотрим наглядно, как медленно работает Find при поиске объекта каждый Update (о чем кричат все гайды для новичков) Погнали.

    Читать дальше →