Event System

方法1:

两个文件

EventManager

EventManager

用法

  • 使用interface IEventListener注册事件,卸载事件
  • 注册具体方法使用AddEventListener,卸载使用RemoveEventListener
  • 如果需要传多个参数,需要适当更新文件具体代码

综述

一件事情会有可能会有许多反馈,每当我们要检测一个事件,首先注册这个事件,不断+=添加方法(反馈),这些都在start(awake)之类中进行,等到游戏结束再取消订阅。

  • 包含一个static EventManager instance;单一实例并用于外部访问成员数据和方法
  • 包含一个interface IEventInfo用于外部多态地实现方法
  • 包含一个字典Dictionary<string,IEventInfo> actionDic 用于存储事件,可以理解成”事件池”
  • 包含类EventInfo<T>继承自上述接口,用于添加单参数方法
  • 包含添加、移除、触发事件

方法2:

文件

EventHandler

原理与方法一是一样的,使用方法也大差不差。

方法一将事件加入字典,不用每次添加都往一个文件里跑,并且结构也清晰一些。

方法二代码量相对少?好像也没少…。