【发布时间】:2017-06-21 00:26:39
【问题描述】:
例如,DelegateHandler 是我发送事件的地方
public class DelegateHandler : MonoBehaviour
{
public delegate void OnButtonClickDelegate ();
public static OnButtonClickDelegate buttonClickDelegate;
public void OnButtonClick()
{
if(buttonClickDelegate!=null)
buttonClickDelegate ();
}
}
一些线程提到我需要在检查它是否为空之前为事件分配一个变量,例如:
OnButtonClickDelegate tempEvent = buttonClickDelegate;
if(tempEvent!=null)
tempEvent();
这是因为,在多线程程序中,我们需要在检查它是否为空和调用事件之间检查是否有一些事件被取消订阅。 但是Unity3D是单线程的,我们也需要这样做吗?我可以写成
if(buttonClickDelegate!=null)
buttonClickDelegate ();
【问题讨论】: