Как работает система событий Unreal Engine 4? - PullRequest
0 голосов
/ 09 апреля 2020

Не углубляясь в кодовую базу, я хочу спросить, как обрабатываются пользовательские события, диспетчеры событий и вообще механизм обработки событий в Unreal Engine 4? Это лучшее, что я видел, это безупречно; он практически позволяет вызывать что угодно откуда угодно! Используют ли они структуру данных очереди событий или аналогичный принцип работы? Какова основная структура данных и алгоритм, используемый для разработки этой системы событий в UE4? Другими словами, создание, удаление, настройка и отправка (пользовательских) событий. Кто-нибудь знает несколько вещей по этому поводу, пожалуйста, поделитесь. Это теоретический вопрос, но к программированию относится в основном C ++.

1 Ответ

0 голосов
/ 12 апреля 2020

Основная идея заключается в использовании делегатов (или указателей на функции), Unreal имеет собственную реализацию класса делегатов, которая в основном хранит массив пар.

Так что в общих терминах c у вас будет класс он содержит основное событие, например, когда обнаруживается столкновение внутри класса C ++, возможно, достаточно глубокое, чтобы быть в контакте с физическим модулем.

Этот класс будет иметь «делегат», который может получить любой объект с указателем на функцию. Например: YourPlayerBlueprint, OnCollide (params). (Так же как вы можете добавлять новые функции для вызова, вы можете удалить его).

Как только это настроено, при обнаружении коллизии сработают все связанные функции и будут работать как событие.

Более того, (это предположение) все функции должны быть независимыми поэтому он может работать параллельно, улучшая производительность.

Если вас больше интересуют указатели делегатов и функций, я рекомендую проверить это «руководство / объяснение» https://blog.molecular-matters.com/2011/09/19/generic-type-safe-delegates-and-events-in-c/

Надеюсь, я помогу немного понять события в нереальном ,

...