Давайте посмотрим, как уменьшить запутанность в нашей кодовой базе с помощью этого изящного инструмента C# :)

События — интересный инструмент в C#, когда вы хотите уменьшить запутанность между системами в вашем приложении, поскольку они позволяют вам уведомлять другие классы и объекты из любой точки вашего проекта. С одной стороны, вы создаете издателей, которые отправляют события; с другой стороны, вы также создаете подписчиков, чтобы получать их и реагировать на них.

У издателя может быть много подписчиков, и при срабатывании он будет транслировать их всем.

Примечание. Между прочим, события зависят от делегатов C#. Если вам интересно и вы хотите немного освежить в памяти, как они работают, я опубликовал еще одну статью о делегатах C#.

Допустим, вы программируете видеоигру — тогда вам, вероятно, придется управлять несколькими сосуществующими, но не связанными напрямую системами: основной игровой механикой, пользовательским интерфейсом, звуками… Все это, конечно, станет довольно сложным к концу проект. В идеале вы хотели бы, чтобы каждый работал сам по себе, чтобы вы могли сосредоточиться на одной системе за раз.

Но! Проблема в том, что вам по-прежнему нужны эти системы для совместной работы. Они должны общаться. Например, звуковая система обычно ничего не делает сама по себе: она воспроизводит определенные звуки при выполнении определенных действий. Итак, если мы так аккуратно изолировали наши системы и убедились, что они хорошо организованы, как мы можем заставить их общаться друг с другом?

Вот где происходят события!

Используя события, вы можете заставить системы отправлять сообщения на центральную шину событий и/или использовать их для выполнения соответствующих обратных вызовов.

Итак, сегодня, чтобы лучше понять тему, давайте рассмотрим базовый пример :)

👏 Понравилась статья? хочешь поддержать мою работу? Не забудьте похлопать в конце ;)

Обнаружение событий на примере базовой аркадной игры

Шаг 1: Подключение систем

Предположим, у вас есть очень простая аркадная игра, в которой всякий раз, когда вы достигаете нового порогового значения очков, вы «поднимаете уровень». Это показано игроку двумя способами: во-первых, у вас есть яркая метка на экране; во-вторых, ты…