Events let one system announce something without knowing every listener.
using System;
public event Action<int> OnHealthChanged;
Invoke:
OnHealthChanged?.Invoke(health);
Subscribe:
void OnEnable()
{
playerHealth.OnHealthChanged += UpdateUI;
}
void OnDisable()
{
playerHealth.OnHealthChanged -= UpdateUI;
}
This keeps PlayerHealth independent from HUD, audio and effects.