Unity 3D Спостерігач (Event, Observer)

2075 / Unity / 2D / 3D / Шаблони / Спостерігач (Event, Observer)

 

Прибирає залежність між об'єктами

Сповіщає підписантів, що:

  1. Стався землетрус
  2. З'явилась аптечка
  3. Піднявся рівень води
  4. Стався ядерний вибух

 

 

EventManager Rotate15

 

 

 

EventManager

public static event Action EventFire;
//public static event Action<int> EventDamage; 
// EventDamage?.Invoke(5); // якщо з параметром
 
public static void Fire(){ // легко запустити ззовні
  EventFire?.Invoke();
}
 
void Update()
{
  if (Input.GetMouseButtonDown(0))
  {
    Fire();    
  }
}


 

Монстр

void OnEnable()
{
  EventManager.EventFire += Fire; // підписатися на EventFire
}

void Fire()
{
  // реакція на повідомлення  
  // зручно, коли у гравця багато зброї
  // та, яка активна - стрілятиме
}

void OnDisable()
{
  EventManager.EventFire -= Fire; // відписатися після смерті
}