Как подписаться на событие с делегатом - PullRequest
0 голосов
/ 22 декабря 2018

Я хотел бы подписаться на событие, чтобы при возникновении события я мог выполнить делегат или анонимную функцию.

Подписка на события с помощью методов проста. Я могу просто ввести имя метода, это работает нормально.:

UnityEngine.UI.Toggle tgl;
tgl.onValueChanged += myMethod;

Но я не могу подписать делегата, используя тот же синтаксис.Это не будет работать:

tgl.onValueChanged += delegate{ Debug.Log("Bang!"); };

Я исследовал это Q & A , которое предложило мне попробовать следующий подход, но это также не работает:

tgl.onValueChanged += (object sender, EventArgs e) => { Debug.Log("Bang!"); };

Как я могусделать эту работу?

1 Ответ

0 голосов
/ 22 декабря 2018

Вам нужно посмотреть, что это за тип onValueChanged, прежде чем пытаться подписаться на него.Это его объявление, взятое из здесь .

public UI.Toggle.ToggleEvent onValueChanged;

Его тип - ToggleEvent, который является классом, а не событием или делегатом.Следовательно, вы не можете использовать оператор +=.

Вы должны позвонить AddListener, как в примерах:

tgl.onValueChanged.AddListener(delegate { ... })
...