消息机制是基于观察者模式的一种机制,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));
}
}
}
---------------------
本文来自 lovethRain 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lovethRain/article/details/52100067?utm_source=copy