Alexeee
@Alexeee
Разработчик игр

Использовать SendMessage или есть альтернатива?

Интересовал вопрос стоит ли использовать SendMessage, нашел на одном форуме информацию, что он медленнее чем GetComponent. Там же предложили использовать альтернативу систему событий
wiki.unity3d.com/index.php/Advanced_CSharp_Messeng...
Система вообщем-то мне понравилась. Один метод можно вызывать из любого места и при этом не обращаться непосредственно к компоненту.
Но в этой системе есть один недостаток: нельзя вызвать все методы с одинаковым именем. А SendMessage позволяет вызывать все методы с одинаковым именем, унаследованные от MonoBehaviour.

Собственно, для чего мне это нужно: когда один метод закончил свою работу, он сообщает всем методам, которые ждут его окончания, о том, что он закончил работу и может передать некоторые параметры всем этим зависимым методам.
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
Griboks
@Griboks Куратор тега C#
Вам нужны классические события.
class Enemy{void Start(){Player.Spawn+=StartAttack;}}
class Player{event someDelegate Spawn;}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos Куратор тега Unity
Альтернатива SendMessage - правильная архитектура проекта.
И да, я бы не использовал SendMessage ни в каком виде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы