我想订阅一个事件,以便在事件触发时可以执行委托或匿名函数。
使用方法订阅事件很容易,我可以键入方法名称,这很好:
UnityEngine.UI.Toggle tgl;
tgl.onValueChanged += myMethod;
但是我不能使用相同的语法订阅委托。这将不起作用:
tgl.onValueChanged += delegate{ Debug.Log("Bang!"); };
我研究了此Q&A,这表明我尝试了以下方法,但这种方法也不起作用:
tgl.onValueChanged += (object sender, EventArgs e) => { Debug.Log("Bang!"); };
我该如何做?
答案 0 :(得分:0)
您需要先查看onValueChanged
是什么类型,然后才能尝试订阅它。这是它的声明,取自here。
public UI.Toggle.ToggleEvent onValueChanged;
它的类型是ToggleEvent
,它是一个类,不是事件也不是委托。因此,不能在其上使用+=
运算符。
您应该致电AddListener
,就像例子中那样:
tgl.onValueChanged.AddListener(delegate { ... })