cdy*_*oby 0 c# events delegates
我System.Action用作我的代表。
public event Action myEvent;
myEvent+=MyMethod1;
myEvent+=MyMethod2;
Run Code Online (Sandbox Code Playgroud)
还有别的地方
myEvent.Invoke();
Run Code Online (Sandbox Code Playgroud)
现在的问题是,MyMethod1()调用时会出现异常。但我仍然希望MyMethod2()在此调用期间被调用。
怎么做?
关于潜在的异常:这实际上是一个 Unity 问题,当一个方法注册到一个事件时,并且该方法包含游戏对象交互。当相关的 MonoBehaviour 删除时,该方法仍然存在,但游戏对象交互会抛出异常。
这是那些棘手的事情之一。事件处理程序不得返回值。如果您希望事情具有合理的确定性,这包括抛出异常。对于抛出的异常,处理程序调用者真正能做什么?
但是您的示例非常清楚地表明您的问题出在处理程序本身 - 修复处理程序。不应该仅仅因为游戏对象不再存在就抛出异常!您还需要确保在适当的时间从事件中正确删除所有处理程序。听起来您的处理程序在事件中一直存在,而它们早就应该被删除了。