接上次问题,这次使用事件系统SimpleEventSystem,因为项目使用的是MVP设计模式,并且使用了UniRx 发现更好用
首先写一个事件类,此类可以携带参数也可以不携带参数
//打开折线图的事件
public class OpenLineChartEvent
{
public PanelEnum panelEnum;
}
然后在MainPanel里面注册事件
//注册打开折线图的事件
SimpleEventSystem.GetEvent<OpenLineChartEvent>()
.Subscribe(openLineChartEvent =>
{
if (openLineChartEvent == null)
{
throw new ArgumentNullException(nameof(openLineChartEvent));
}
OpenLineChart(openLineChartEvent.panelEnum);
})
.DisposeWhenGameObjectDestroyed(this);
其中OpenLineChart方法是用来操作打开折线图的
最后在ButtonList里面发送事件
//通知打开康复评估表
SimpleEventSystem.Publish(new OpenLineChartEvent() { panelEnum = PanelEnum.FMAPanel });
在MainPanel里面注册事件是因为要用MianPanel来操作下级折线图的出现与隐藏
在ButtonList里面发送事件是因为要在ButtonList里面操作Button