Unity设计模式—中介者模式

文章介绍了中介者模式在Unity游戏开发中的应用,特别是在实现发布/订阅系统中的作用,以减少对象间的耦合。通过使用EventManager作为中介,处理各种事件的发布和订阅,实现了观察者模式与中介者模式的结合。文章还讨论了C#中实现回调函数传递的挑战,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity设计模式—中介者模式

请添加图片描述

中介者模式:用一个中介对象封装一系列的对象交互,中介者使对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

我见

传统的中介者模式写法个人用的很少,写起来很麻烦,如下图:

请添加图片描述

而且由于具体中介者类包含了大量同级对象的交互细节,可能会变得很复杂,最终难以维护。

但是中介者模式的思想非常有用,有好多种非常常用的应用场景,每种场景都值得专门写一篇blog。

所以,这一篇blog会重点介绍几种中介者模式的变种(应用),而非实现上图所示的中介者模式。

以下几种使用了中介者模式的方法都非常常用

  • 中介者模式和观察者模式结合的发布/订阅系统
  • 服务定位器模式(TODO:专题介绍)
  • MVP/MVVM模式里的Presenter/ViewModel也是中介者(TODO:专题介绍)

中介者模式和观察者模式结合的发布/订阅系统

需求

试想一个需求:在游戏里有NPC对象和HireView招聘录用界面。
请添加图片描述

点击招聘录用界面的“录用”按钮,主场景的人播放庆祝动作。

常规做法如下:

1.要么由界面通知npc做出更新,即view依赖npc:

public class HireView(){
    public void OnHireButtonClick(string id){
        //处理这个界面的逻辑
        this.UpdateView();
        //通过某种手段获取npc对象
        NPC npc = Global_Get_NPC(id);
        npc.Happy();
    }
}

2.要么由npc监听view的按钮点击事件,即npc依赖view

hireView
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NickPansh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值