Как подписаться на событие с делегатом

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

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

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 { ... })
Другие вопросы по тегам