如何使用委托订阅事件
How to subscribe to an event with a delegate
我想订阅一个事件,以便在事件触发时我可以执行委托或匿名函数。
使用方法订阅事件很简单,我只需输入方法名称即可,效果很好:
UnityEngine.UI.Toggle tgl;
tgl.onValueChanged += myMethod;
但我无法使用相同的语法订阅委托。这行不通:
tgl.onValueChanged += delegate{ Debug.Log("Bang!"); };
我研究了这个 Q&A,它建议我尝试以下方法,但这也不起作用:
tgl.onValueChanged += (object sender, EventArgs e) => { Debug.Log("Bang!"); };
我怎样才能使这个工作?
在尝试订阅之前,您需要查看 onValueChanged
是什么类型。这是它的声明,取自 here.
public UI.Toggle.ToggleEvent onValueChanged;
它的类型是 ToggleEvent
,是 class,不是事件也不是委托。因此,您不能对其使用 +=
运算符。
您应该像示例那样调用 AddListener
:
tgl.onValueChanged.AddListener(delegate { ... })
我想订阅一个事件,以便在事件触发时我可以执行委托或匿名函数。
使用方法订阅事件很简单,我只需输入方法名称即可,效果很好:
UnityEngine.UI.Toggle tgl;
tgl.onValueChanged += myMethod;
但我无法使用相同的语法订阅委托。这行不通:
tgl.onValueChanged += delegate{ Debug.Log("Bang!"); };
我研究了这个 Q&A,它建议我尝试以下方法,但这也不起作用:
tgl.onValueChanged += (object sender, EventArgs e) => { Debug.Log("Bang!"); };
我怎样才能使这个工作?
在尝试订阅之前,您需要查看 onValueChanged
是什么类型。这是它的声明,取自 here.
public UI.Toggle.ToggleEvent onValueChanged;
它的类型是 ToggleEvent
,是 class,不是事件也不是委托。因此,您不能对其使用 +=
运算符。
您应该像示例那样调用 AddListener
:
tgl.onValueChanged.AddListener(delegate { ... })