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

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


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


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


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

        //消息节点响应事件
        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
        {
            public int Compare(EventNode x, EventNode y)
            {
                return (x.priority.CompareTo(y.priority));
            }
        }

    }


你可能感兴趣的:(Unity 客户端框架(三):消息机制)