发送委托信息

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;


/// <summary>
/// 发送消息的类
/// </summary>
public class MesageInfo
{
    public ArrayList Alist;
    public MesageInfo(ArrayList alist)
    {
        Alist = alist;
    }
}

/// <summary>
/// 通知中心
/// </summary>
public class NotificationCenter : SingletonClass<NotificationCenter>
{
    //定义字典管理消息及行为
    private Dictionary<string, Action<MesageInfo>> NotiDic = new Dictionary<string, Action<MesageInfo>>();
    /// <summary>
    /// 注册成为观察者
    /// </summary>
    /// <param name="name命令"></param>
    /// <param name="action行为动作"></param>
    public void RegistObserver(string name, Action<MesageInfo> action)
    {
        if (NotiDic.ContainsKey(name))
        {
            NotiDic[name] += action;
        }
        else
        {
            NotiDic.Add(name, action);
        }
    }
    /// <summary>
    /// 移除观察者
    /// </summary>
    /// <param name="name"></param>
    /// <param name="action"></param>
    public void RemoveObserver(string name, Action<MesageInfo> action)
    {
        if (NotiDic.ContainsKey(name))
        {
            NotiDic[name] -= action;
            if (NotiDic[name] == null)
            {
                NotiDic.Remove(name);
            }
        }
    }
    /// <summary>
    /// 发送消息
    /// </summary>
    /// <param name="name命令"></param>
    /// <param name="mesage消息"></param>
    public void SendNotification(string mesagename, MesageInfo mesageinfo)
    {
        if (NotiDic.ContainsKey(mesagename))
        {
            NotiDic[mesagename](mesageinfo);
        }
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容