【发布时间】:2020-11-22 19:29:46
【问题描述】:
这是我的问题:
我有一个脚本(统一,c#),在多个对象中实例化,应该将消息发送到一个唯一的对象。例如:
public delegate void DeathDelegate(string name, float q)
public event DeathDelegate OnDeathEvent;
但是当一个实例化的对象(使用相同的脚本)尝试发送消息时会出现错误
NullReferenceException: Object reference not set to an instance of an object
我知道在多个实例化对象上使用委托是不可能做到这一点的,但我可以理解如何以其他方式实现这一点。 任何帮助,将不胜感激!谢谢!!
【问题讨论】:
-
只是一个小注解:
On*名称用于事件不是标准的。事件应该是Click。引发事件的对象上的方法通常称为OnClick。 -
看起来你有一个多对一的关系,任何调用者对象都应该通知唯一的监听器。您可以尝试将事件设为静态,以便侦听器处于类级别,而不是对象级别。
-
@Everts 我该怎么做?
-
@Everts - 静态事件对我来说是个坏主意。
-
在这种情况下,发送事件的不是哪个对象,而是该类型的任何对象。所以静态政变是一种可行的方法。如果有任何理由不使用,也可以不使用。