基于委托的低耦合消息传递

消息传递中心

用到知识点,委托,字典数据结构
Unity内置了SendMessage方法,但是耦合性较高,在调用委托时候会调用委托上所挂在的方法,在调用时并不确定都挂载了什么方法。需要消息的一方只需要在委托上挂载方法,利用委托中的参数(消息),就可以接收到所需要的信息。实现了低耦合的消息传递。

现在我这里有四个按钮需要同时打开一个UI面板,在UI面板中需要显示一些信息,但是我不知道要显示一些什么东西,这时候就需要别人告诉我信息,传递过来什么我就显示什么。
在这里插入图片描述

建立四个按钮,并且一个面板 ,按钮用来打开面板,这里只演示一下修改面板上信息

在这里插入图片描述
第一步定义委托 我这里委托只需要一个参数,如果需要多个参数怎么办呢?
在这里插入图片描述
在这里插入图片描述

多个参数 将参数类作为参数传递,构造函数必须赋值
在这里插入图片描述
不好意思写错了 给消息类加一个属性 如果不公开外面是访问不到的
在这里插入图片描述

然后我们的消息中心需要对外提供两个方法,一个发送消息,一个接收消息。这时候问题来了,如果我多个地方需要用到消息中心怎么区别我哪个才是我要接收的消息呢?
这时候就要用到字典数据数据结构了,根据字典键唯一的特性来区分我要接收哪个消息
键:消息的类型,值:具体消息所依赖的委托
在这里插入图片描述
发送消息方法
在这里插入图片描述
接收消息方法
在这里插入图片描述
测试
为面板添加一个脚本用来接收消息
在这里插入图片描述
在这里插入图片描述
给Canvas添加测试脚本
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这样在点击按钮时候就会调用"Test"键所对应值的委托上所挂载的方法,也就是将消息传递到面板中了。
实现了低耦合的消息传递。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值