首先,这篇博文是参考了http://blog.sina.com.cn/s/blog_5b6cb9500102uypp.html 这个文章作者的思路而设计的。经过自己的理解后,模仿了一个消息系统给自己用,下面谈谈对这个系统的认识和看法。
我所制作的EventManager的核心是:
1.把我们游戏中所有用到的方法,全部放在一个枚举中,如下:
public enum GameEvent
{
//这里是定义玩家的事件
PLAYER_ATTACK,
PLAYER_DEATH,
PLAYER_SPEAK,
PLAYER_GAINLIFE,
PLAYER_REDUCELIFE,
//这里是定义怪物的事件
ENEMY_DEATH,
ENEMY_ATTACK,
ENEMY_REDUCELIFE,
}
2.建立一个字典容器,然后在游戏初始化的时候把游戏中所有的事件即上面的GameEvent全部保存在字典的key中,这样我们就把游戏内所有的事件名全部放在了一个字典中。代码如下:
//建立委托
public delegate void CommonEvent(object data);
//建立事件列表
public Dictionary<GameEvent, CommonEvent> eventDic = new Dictionary<GameEvent, CommonEvent>();
/// <summary>
/// 事件初始化
/// </summary>
public void InitEvent()
{
foreach (GameEvent key in Enum.GetValues(typeof(GameEvent)))
{
AddEvent(key);
}
}
/// <summary>
/// 添加一个回调事件
/// </summary>
/// <param name="key"></param>
void AddEvent(GameEvent key)
{
eventDic.Add(key, delegate (object data) { });
}