Использование EventBus
В этом руководстве вы научитесь подписываться на события с помощью EventBus.
Что такое событие?
Событие - это часть кода, которая выполняется, когда в игре происходит определённое действие. Будь то откроется новое окно, игрок сменил карту, открывается достижение - это всё события.
Полный список всех событий вы можете посмотреть здесь.
Почему важны события?
События позволяют разработчикам реагировать на изменения в игре, обеспечивая более гибкое управление игровым процессом и возможность внедрять новые функции без изменения кода игры.
Подписка на события
Чтобы подписаться на события, вам нужно использовать метод Subscribe
класса EventBus
. Ниже приведён пример, который демонстрирует, как это сделать.
Предположим, что вы хотите подписаться на событие, связанное с добавлением предмета в инвентарь игрока. Вы можете подписаться на это событие следующим образом:
public void OnLoad(ModContext context)
{
EventBus.Subscribe<ItemAddedEvent>(OnItemAdded); // подписываемся на событие во время загрузки мода
}
private void OnItemAdded(ItemAddedEvent e)
{
// здесь мы можем, к примеру, получить ID и имя предмета.
context.Logger.Log(e.ItemName);
context.Logger.Log(e.ItemID.ToString());
}
Объяснение кода
- Подписка на событие: При загрузке мода, мы подписываемся на событие
ItemAddedEvent
, передавая методOnItemAdded
, который будет вызван каждый раз, когда у игрока в инвентаре появляется новый предмет. - Обработка события: Метод
OnItemAdded
принимает объект события и выполняет необходимую логику. В данном случае мы выводим имя и ID предмета.
Отписка от события
Если вы думаете, что какое-то событие вам уже не понадобиться, то можно отписаться от этого события. Достаточно будет вызвать в нужный вам момент метод Unsubscribe
:
public void OnShutdown()
{
EventBus.Unsubscribe<ItemAddedEvent>(OnItemAdded);
}
Здесь мы отписываем метод OnItemAdded
от события ItemAddedEvent
во время завершения работы игры.