Как подписаться на событие с делегатом
Я хотел бы подписаться на событие, чтобы при возникновении события я мог выполнить делегат или анонимную функцию.
Подписаться на события с помощью методов легко, я могу просто ввести имя метода, это прекрасно работает:
UnityEngine.UI.Toggle tgl;
tgl.onValueChanged += myMethod;
Но я не могу подписать делегата, используя тот же синтаксис. Это не будет работать:
tgl.onValueChanged += delegate{ Debug.Log("Bang!"); };
Я исследовал этот вопрос и ответ, который предложил мне попробовать следующий подход, но он также не работает:
tgl.onValueChanged += (object sender, EventArgs e) => { Debug.Log("Bang!"); };
Как я могу сделать эту работу?
1 ответ
Решение
Вы должны посмотреть, какой тип onValueChanged
есть, прежде чем пытаться подписаться на него. Это его декларация, взятая отсюда.
public UI.Toggle.ToggleEvent onValueChanged;
Его тип ToggleEvent
, который является классом, а не событием или делегатом. Поэтому вы не можете использовать +=
оператор на это.
Вам следует позвонить AddListener
как в примерах:
tgl.onValueChanged.AddListener(delegate { ... })