我在Unity上遇到问题:
我尝试用委托创建一个事件监听器,我从教程中获取代码,但是当我尝试将委托方法添加到另一个类方法时,我遇到了一个错误:“无法隐式转换类型void' to
Metronome.OnTickEvent”。
这是我的班级代表:
public delegate void OnTickEvent();
public event OnTickEvent onTick;
IEnumerator coroutineMetronome() {
if (CustomTimer.manager.timerState) {
for (;;) {
nextTick += delay;
yield return new WaitForSeconds(nextTick - Time.time);
onTick(); // I call the delegate method here
}
}
}
......那就是事件接收者类:
protected virtual void Start ()
{
manager = this as T;
Metronome.manager.onTick += OnSynchronization(); // Here is the bug line
}
protected void OnSynchronization() {
Debug.Log("coucou");
}
感谢您的帮助!
答案 0 :(得分:6)
您不需要在方法名称后面加上括号:
Metronome.manager.onTick += OnSynchronization;
使用括号表示您希望先调用方法,然后将结果添加到事件中。
更正后的代码是
的简短版本Metronome.manager.onTick += new OnTickEvent(OnSynchronization);