发布者和订阅的模式概述
发布者负责:
事件的声明
事件的触发
订阅者负责:
发布者的类的引用
事件绑定方法
方法(反应)
发布订阅模式应用,举个例子:
》》玩家的死亡 事件
1.游戏操作,不能操作
2.ui 显示玩家死亡文字
显示当前的得分
3.声音 播放死亡的声音
总结:
是一个事件发生,多个不同的类进行不同的反应。
这样的情况比较适合使用发布订阅者模式。
我的需求
拾取小球,记分牌计分。
发布者
小球(发布者)是一样的,使用预制件(脚本)+触发器,tag是ball。
事件触发条件
当小球发现进入碰撞器的游戏对象是玩家的时候,触发事件(小球被碰撞)
玩家 ,使用刚体组件,(tag是player)()
订阅者
记分牌(订阅者) ,挂脚本(获得游戏对象+事件---绑定自己的方法)
实现
小球
发布事件 触发事件
玩家
移动和碰撞
记分牌
订阅事件 改分
这个方法好处是解耦合,就是不需要在自家类中new一个对方的类,然后在获得他的脚本,再绑事件。
不好的地方是:
有多少个预制体,你就需要查找多少次游戏对象。这样太耗时间,而且,这个游戏对象会经常刷新,最后就是有一个对应的数据结构管理这些信息。一次查找,存放对象和应用,销毁时,也要在数据结构中销毁。这样可以节省资源。