消息传递中心
用到知识点,委托,字典数据结构
Unity内置了SendMessage方法,但是耦合性较高,在调用委托时候会调用委托上所挂在的方法,在调用时并不确定都挂载了什么方法。需要消息的一方只需要在委托上挂载方法,利用委托中的参数(消息),就可以接收到所需要的信息。实现了低耦合的消息传递。
现在我这里有四个按钮需要同时打开一个UI面板,在UI面板中需要显示一些信息,但是我不知道要显示一些什么东西,这时候就需要别人告诉我信息,传递过来什么我就显示什么。
建立四个按钮,并且一个面板 ,按钮用来打开面板,这里只演示一下修改面板上信息
第一步定义委托 我这里委托只需要一个参数,如果需要多个参数怎么办呢?
多个参数 将参数类作为参数传递,构造函数必须赋值
不好意思写错了 给消息类加一个属性 如果不公开外面是访问不到的
然后我们的消息中心需要对外提供两个方法,一个发送消息,一个接收消息。这时候问题来了,如果我多个地方需要用到消息中心怎么区别我哪个才是我要接收的消息呢?
这时候就要用到字典数据数据结构了,根据字典键唯一的特性来区分我要接收哪个消息
键:消息的类型,值:具体消息所依赖的委托
发送消息方法
接收消息方法
测试
为面板添加一个脚本用来接收消息
给Canvas添加测试脚本
这样在点击按钮时候就会调用"Test"键所对应值的委托上所挂载的方法,也就是将消息传递到面板中了。
实现了低耦合的消息传递。