Не могу до конца понять возможности системы событий в Unity и когда именно ее следует применять. Большинство туториалов по системе событий, с которыми удалось ознакомиться, показывают как устроены эвенты с точки зрения синтаксиса, но не дают представления о том, какие конкретно дают возможности события с точки зрения контроля происходящего в коде, особенно интересуют ситуации, когда можно использовать события, как альтернативу Upadate.
К примеру, такая ситуация. Есть Canvas, на нем есть компонент Canvas Group и в нем есть свойство Interactable. Это свойство динамически меняется через другие скрипты, соответственно, нет точного понимания, когда именно произойдет изменение свойства Interactable. Можно ли в данном случае использовать только систему событий и отследить момент, когда именно произойдет изменение свойства Interactable? То есть, можно ли заменить этот код:
_canvasGroup = Canvas.GetComponent<CanvasGroup>();
void Update()
{
if (_canvasGroup.interactable == true)
//action
}
на примерно что-то такое:
Event OnCanvasChanged;
void Start()
{
OnCanvasChanged.AddListener(Cnanging);
}
void Changing()
{
if(_canvas.interactable == true)
{
//action
}
if (_canvas.interactable == false)
{
//action
}
}
Или без Update все равно не обойтись?