мне создать С++ евент, на которую можно подписаться в Blueprints?
Задача: Есть character, который получает damage. Нужно на каждое изменение значения hp слать оповещение слушателям евента. В моем случае, слушателем будет progress bar (health bar)
Чет совсем запутался с этими делегатами, макросами и т.д. Может есть простая инструкция как это сделать?
Если хочешь ТОЛЬКО в БП использовать, то BlueprintImplementableEvent,е сли хочешь реализацию по умолчанию в плюсах BlueprintNativeEvent пользуй в UFUNCTION()
Вот пример из Match3
Для понимания (больше для себя) последовательность вызовов 1. Чарактер получает урон 2. В методе чарактера DamageApply - вызываю функцию (hey_my_health_changed_please_be_informed()) 3. Виджет, который отображает прогресс бар, подписывается на эту функцию (hey_my_health_changed_please_be_informed) 4. При получении евента, на виджете вызывается функция update_progress_bar_value И получается, что чарактер должен слать евенты из C++, а виджет имплементировать обработку ивента в BP
https://unrealcommunity.wiki/calling-bp-events-from-cpp-usceo7hw Вот нашел статейку
В дискорде ребята написали что нужно использовать dynamic multicast delegate - сижу курю, что за зверь этот тако)
Щас попробую объяснить. Во-первых над классом ты должен объявить можно сказать тип делегата.
Обьясните еще пожалуйста почему мультикаст делегат, а не ивент делегат, вроде он тоже дает такой же результат
Ага, сделал `DECLARE_DYNAMIC_MULTICAST_DELEGATE(FHealthChanged)`
Обсуждают сегодня