我制作了这样的自定义事件:
public delegate void ResponseReceivedDelegate(string textToSpeak, string offeringText, string offeringImageNo, string animationName, string emotion);
public static event ResponseReceivedDelegate ResponseReceivedEvent;
if (ResponseReceivedEvent != null)
{
ResponseReceivedEvent (textToSpeak, offeringText, offeringImageNo, animationName, emotion);
}
我已将此事件注册到多个其他脚本中,以便我知道此事件已发生。
现在的问题是,有不同的参数(如上所述)。我的每个脚本都需要一个参数,其他参数不需要特定的脚本。就像一个脚本使用textToSpeak,而另一个脚本使用offeringText等。 。事件被解雇了。我的问题是我需要写单独的事件,还是这个事件就够了。这是正确的方法吗?
ResponseReceivedEventForSpeak (textToSpeak);
ResponseReceivedEventForOfferingText (offeringText);
ResponseReceivedEventForImageNo (offeringImageNo,);
//and so on...
或
ResponseReceivedEvent (textToSpeak, offeringText, offeringImageNo, animationName, emotion);
???????????
答案 0 :(得分:1)
我建议,正如Jeroen在他的评论中所写,使用从EventArgs派生的类。在这个类中,您可以使用枚举来指定传递的字符串:
ContextStoppedEvent
然后,您可以对所有内容使用相同的事件,同时仍然只发送相关的字符串,并保持您的代码标准:
public class ResponseReceivedEventArgs : EventArgs
{
public enum EventType
{
TextToSpeak,
OfferingText,
OfferingImageNo,
AnimationName,
Emotion
}
public ResponseReceivedEventArgs(EventType eventType, String eventValue)
{
Type = eventType;
Value = eventValue
}
public EventType Type {get;}
public String Value {get;}
}