Unity 客户端框架:消息机制

消息机制是基于观察者模式的一种机制,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 

猜你喜欢

转载自blog.csdn.net/qq_31967569/article/details/82965721