您的位置:首页 > 移动开发 > Unity3D

Unity 客户端框架(三):消息机制

2016-08-03 08:24 330 查看
消息机制是基于观察者模式的一种机制,MVC模式被广泛使用,举例说明:当人物被攻击血量减少的时候,我们要通知所有带有血量需要改变的对象,比如:血量条UI等等

为什么要使用:解耦合,降低模块之间的关联性,比如装备面板和属性面板之间的互调等等

本文的消息节点优先排序性能低下,有什么的好的建议可以指教指教

//消息中心
public class EventCenter : Singleton<EventCenter>
{
//消息节点表
public List<EventNode> NodeList = new List<EventNode>();

//消息节点响应事件
public void HanlderEvent(EventType t, params object[] objs)
{
foreach (EventNode e in NodeList)
{
//Debug.Log(e.priority);
e.OnHandler(t, objs);
}

}

}

//事件类型
public enum EventType
{
Command
}

//消息节点
public abstract class EventNode : MonoBehaviour
{
//优先级
protected int priority;

//响应事件
abstract public void OnHandler(EventType t, params object[] objs);

//设置优先级
protected void setPriority(int p)
{
priority = p;
EventCenter.Instance.NodeList.Sort(new EventNode.priorityComparer());
}

//添加至消息中心
protected virtual void Start()
{
EventCenter.Instance.NodeList.Add(this);
}

//从消息中心移除
protected virtual void OnDestroy()
{
if (EventCenter.Instance.NodeList.Contains(this))
{
EventCenter.Instance.NodeList.Remove(this);
}
}

//排序类
public class priorityComparer : IComparer<EventNode>
{
public int Compare(EventNode x, EventNode y)
{
return (x.priority.CompareTo(y.priority));
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: