Делегаты в Unreal Engine - это реализация известного паттерна проектирования Observer. Клиентский класс подписывается на делегат и слушает программные события, а класс, публикующий делегат, может в свою очередь уведомлять всех клиентов, даже не зная, существуют они или нет. В целом, это делает код менее связанным.
Сейчас проводим набор на стажировку в компанию, в тестовом у нас есть вопрос про различия делегатов.
Почти у всех вижу, что динамик делегаты можно сериализовать, но почему то никто не пишет, что динамик делегаты биндят функцию по имени, а не по адресу и по этому могут быть использованы в блюпринтах, считаю это упущением данной статьи.
На мой взгляд основное отличие dynamic делегата от статического это именно то, как происходит бинд, от сюда вытакает и все остальное и дает более понимание о механизмах работы.
То есть именно потому что динамик делегат знает имя функции он может быть сериализован, использован в блюпринтах и требует UFUNCTION(). По этому же он и медленнее. Так же хочу заметить, что юникаст динамик делегат тоже может быть использован в блюпринтах как инпут-пин функции.
ну вы посморите какой умный
Их можно байндить по имени функции - все верно. Но если мне не изменяет память - в блюпринтах их всё-таки использовать нельзя. Проверить сейчас не могу 🤷🏻♂️
И кстати по адресу их тоже можно байндить
Действительно полезная шпаргалка, спасибо.
Спасибо!
Было бы круто еще добавть про
1. Делегаты с параметрами
2. Как их создавать в блюпринтах без С++ (хотя это уже не про виды, а про реализацию)
👌🏻 Про параметры, возвращаемые значения ещё напишу отдельно. Но там несложно на самом деле
Забыл упомянуть про Events, добавь в статью.