Engine.Events.InterfaceEvent¶
Позволяет создавать в роли ивента целый класс или струтуру. Формально это система обратных ивентов. Когда мы точно знаем на момент вызова ивента что будет выполнено.
Для начала нужно создать интерфейс с методами которые мы захотим вызывать по ивенту.
public interface IExecuteExample
{
void Execute();
}
Далее нужно реализовать классструктуру и методы которые мы будем выполнять по ивенту.
public class ExecuteExample : IExecuteExample
{
public void Execute()
{
Debug.Log("Is Executed...");
}
}
Теперь необходимо создать место вызова ивента.
Поскольку мы используем для примера механику с интерфейсами - то и использовать будем InterfaceEvent.
public class InterfaceEventExample : MonoBehaviour
{
//Создаем экземляр ивента
public InterfaceEvent<IExecuteExample> executions = new InterfaceEvent<IExecuteExample>();
private void OnEnable()
{
//Подписываем наш ивент и указываем какой класс\структуру хотим выполнить.
executions.Subscribe(new ExecuteExample());
}
private void OnDisable()
{
executions.Unsubscribe(new ExecuteExample());
}
//Вызываем срабатывание нашего ивента и указываем какой метод выполнить.
[NaughtyAttributes.Button("Execute")]
public void Execute()
{
executions.Invoke(item => item.Execute());
}
}