Демо-проект:
Аналогия
• Аналогия 1: у нас есть микроволновка с wi-fi. Несколько человек подключились к микроволновке, и подписались на оповещение OnCookingComplete.
Когда микроволновка закончила разогревать еду, она всех оповещает.
• Аналогия 2: На какой-то базе есть охранники с радио-рациями (которые могут только принимать сообщение). И на этой базе есть диспетчерский пульт. С пульта через рацию говорят “идите в подвал“ OnCheckOutTheBasement. И все охранники, у которых есть радио-рации услышали это сообщение и идут в подвал. Пара охранников без раций не услышали сообщения.
• Аналогия 3: Банк оповещает клиентов о начислении зарплаты. Клиентам приходит смс-уведомление.
-----
Реализация
Актор-извещатель всегда один, акторов-получателей может быть много.
Актор-извещатель решает когда послать сообщение в мир (создаёт оповещение). И оповещение получат только те акторы, которые подписаны (bind) на эвент-извещателя.
Актор-извещатель может передать какие-то данные через параметры. Порядок и типы входных параметров называются “сигнатурой эвента“.
Если актору-получателю точно не нужно получать оповещение, нужно отписаться (unbind) от уведомлений.
Прежде чем вы добавляете свои новые диспатчер-эвенты, убедитесь что эти эвенты не созданы уже в Анриале.
-----
Примеры
Желательно называть сообщения диспатчера с префиксом OnSomethingHappend. И так же называть эвенты, на которые мы делаем бинд.
• OnGetItem - какой-то NPC может похвалить главного героя, что тот взял предмет
• OnBeginBuff/OnEndBuff - враги могут отбегать подальше, если узнают, что у персонажа включился бафф на близкий урон.
• OutOfAmmo - если в сумке персонажа кончились патроны, то персонаж может об этом сказать вслух
• OnFinishLevel - враги перестают атаковать, если мы добежали до какого-то места
• OnStrongWind - главного героя начинает сдувать, если WeatherSystem сообщила о сильном ветре. Пули и гранаты летят туда, куда сильно дует ветер.
• OnEveningIsComing/OnNigthIsComing - персонаж включает фонарик, если на улице становится темно
• OnBeatTheBoss (OnDestroyed) - Мы победили босса, и изменилась погода. WeatherSystem ждала от BossEnemy оповещение о смерти, и как оповещениее пришло, погода изменилась.
• OnOkButtonClick - Контроллер или Персонаж ждут нажатия кнопки в UI. UI отправляет диспатчер-сообщение (оповещение) OnOkButtonClick или OnCancelButtonClick, контроллер его получает.
(Примечание: в Блюпринтах можно при создании виджета в контроллере напрямую получить доступ к кнопке и сразу сделать бинд. Это нарушает правила ООП, но такое может быть удобно, если не хочется делать цепочку из диспатчеров.)
• OnLowHealth - Мы стреляем в противников, и как только у нас здоровье опустилось ниже 20%, противники об этом узнают и начинают хуже попадать, у них увеличивается разброс при стрельбе.
• OnDamageIsApplied (OnAnyDamage) - Мы стреляем в противника, трейсом получили на него ссылку, и можем убедиться что в него точно попала пуля. То есть, если мы выстрелили в противника самонаводящейся ракетой, убежали за стену и не видим что там происходит. Ракета долетела и нанесла урон, мы можем получить оповещение о том, что “да, ракета попала в цель“ и может быть разблокировали какую-то ачивку.
Тайм-коды:
00:00 Вступление
00:44 Аналогия
02:04 Реализация
04:41 Примеры
08:05 Заключение
175 views
19
5
4 weeks ago 00:12:10 1
FireDragonGameStudio - AR Indoor Navigation with Unreal Engine 5.4
4 weeks ago 00:02:25 1
Diablo 2 - Act 1 | AI Movie Trailer | Cinematic
4 weeks ago 00:05:25 1
Donald Trump vs Kamala Harris. Epic Rap Battles of History
4 weeks ago 00:17:17 7
Easy Houdini: Jam2Go Datamoshing in Copernicus
4 weeks ago 00:05:15 31
The Witcher 4 Concept Gameplay Unreal Engine Lumen Nanite
4 weeks ago 00:45:37 1
Проклятие Bethesda. Creation Engine
4 weeks ago 00:10:32 11
Невидимость стен для игр сверху | Top Down Invisible Walls | Уроки Unreal Engine 5
4 weeks ago 00:34:30 1
TRENCH TALES Exclusive Alpha Demo | New SURVIVAL HORROR like WWII Resident Evil in Unreal Engine 5
4 weeks ago 00:01:59 1
Knight Girl
4 weeks ago 00:00:00 2
Видосы и Clive Barker’s Undying / Жирофон на Киберпанк
4 weeks ago 00:01:46 1
Wild Assault Official Trailer: Assemble
4 weeks ago 00:15:55 1
Israël : la France arme-t-elle un génocide ? 🔎 En OFF avec Lumi
4 weeks ago 00:16:58 1
« Ne parlez pas de VIOLENCES POLICIÈRES ! » 🔎 En OFF avec Lumi
4 weeks ago 00:00:38 1
Counter-Strike 1.6 Unreal Engine 5
4 weeks ago 00:00:00 1
ПРОХОЖДЕНИЕ SILENT HILL 2 REMAKE - Сайлент Хилл 2 на PS5 #5
4 weeks ago 00:09:24 1
Buildify - бесплатный аддон для архитектуры!
4 weeks ago 00:10:32 15
Забудь про сложные движки — Unity6 сделает из тебя разработчика игр!!!
4 weeks ago 00:00:00 1
UNTIL DAWN REMAKE Прохождение # 3 ᐅ Ремейк Дожить до рассвета. Стрим ✔️
4 weeks ago 00:06:27 8
Как сделать персонажа прозрачным | Player Occlusion | Уроки Unreal Engine