Сообщения — это как почтовая система вашей игры: они позволяют объектам общаться, даже не зная друг о друге. Разберём три мощных метода!
📩 3 способа отправки сообщений
1. SendMessage (Почта для себя)
// Вызывает метод только у самого объекта
gameObject.SendMessage("TakeDamage", 10.0f);
🔹 Особенности:
- Работает только с текущим GameObject
- Если метод не найден — ошибка (если не указано иное)
2. BroadcastMessage (Массовая рассылка)
// Вызывает метод у объекта и ВСЕХ его детей
gameObject.BroadcastMessage("Heal", 25.0f);
🌐 Где ищет:
Текущий объект → Все дочерние объекты (рекурсивно)
3. SendMessageUpwards (Письмо родителям)
// Вызывает метод у объекта и ВСЕХ его родителей
gameObject.SendMessageUpwards("AddScore", 100);
🔼 Где ищет:
Текущий объект → Родитель → Дедушка → ...
⚙️ Параметры отправки
Все методы поддерживают опцию:
SendMessageOptions.DontRequireReceiver // Не ругаться, если метод не найден
Пример:
// Безопасный вызов (не будет ошибки)
enemy.SendMessage("PlaySound", options: SendMessageOptions.DontRequireReceiver);
🚫 Опасные моменты
// Плохо: хрупкая связь (метод может переименоваться)
enemy.SendMessage("TakeDmg"); // Опечатка = ошибка!
// Лучше: использовать события (C# events) или ScriptableObject
📊 Сравнение методов
- SendMessage — Только себе
- BroadcastMessage — Вниз по иерархии
- SendMessageUpwards — Вверх по иерархии