Unity下落式音游实现——(3)实现观察者模式
前言
本来这一部分是计划放在后面的,但在整理鼓盘敲击判定时优化了原来的部分代码(删掉了一个不必要地函数),顺理成章地出了bug。最后发现是这个函数原会在另一个脚本中用unity自带地消息系统传递(SendMessage),麻烦在于SendMessage传递函数名参数用的是字符串,所以当我回滚代码,查找那个函数的引用时什么也没找到,很麻烦。于是就先将观察者模式提前…
前期准备
观察者模式
有监听者和被监听者两类对象,当某事件出现时,被监听者会对所有监听者进行广播一段信息,当监听者收到信息,发现这信息是自己感兴趣的内容则执行某些操作,若不是则忽略该信息。我们需要实现一个Messenger对象中心,给监听者提供接口函数AddListener以监听某段信息,给被监听者提供Boradcast以广播某段信息。信息以字符串形式传递,在广播时可以传递参数(意味着我们需要使用模板)
C#委托和事件
类似C++中函数对象,能实现一对多调用函数。监听者使用AddListener在Messenger中注册对应委托事件,被监听者使用Boradcast在Messenger中调用对应委托事件