• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: unity3d  script  

资源简介

用于unity3d的延迟消息机 具体参考http://blog.csdn.net/hale445566/article/details/38357123

资源截图

代码片段和文件信息

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

//发送信息的方法签名  消息处理成功 返回true else false
public delegate bool Message();
public delegate bool Message(T arg0);
public delegate bool Message(T arg0U arg1V arg2X arg3);

/// 
/// 信息中心
/// 

public class NotificationCenter 
{

    //事件表 key是事件名称  value是方法委托
    public static Dictionary eventTable = new Dictionary(100);

    //错误消息 已有收听者
    public static NotificationException HasListenerException(string msg)
    {
        return new NotificationException(string.Format(“消息机添加收听者错误 \“{0}\“已有该收听者,相同收听者只能有一个“ msg));
    }

    //错误消息 没有收听者
    public static NotificationException NoListenerException(string msg) {
        return new NotificationException(string.Format(“消息机发送消息错误 \“{0}\“没有收听者“ msg));
    }

    //错误消息 没有方法
    public static NotificationException NoDelegateException(string msg)
    {
        return new NotificationException(string.Format(“消息机发送消息错误 \“{0}\“收听者没有该委托方法“ msg));
    }

    //错误消息 方法转换错误
    public static NotificationException NullMessageException(string msg)
    {
        return new NotificationException(string.Format(“消息机发送消息错误 \“{0}\“方法转换错误转换后的message为空可能是方法参数不对“ msg));
    }

    //检查收听者是否可添加
    public static void CheckAddListener(string lis) {
        //已有收听者 发送错误消息
        if (eventTable.ContainsKey(lis))
            throw HasListenerException(lis);
    }

    //检查收听者是否可移除
    public static void CheckRemoveListener(string lis)
    {
        //没有收听者 发送错误消息
        if (!eventTable.ContainsKey(lis))
            throw NoListenerException(lis);
    }

    //检查消息是否可发送
    public static void CheckBroadcastListener(string lis)
    {
        //如果没有该方法收听者 
        if(!eventTable.ContainsKey(lis))
            throw NoListenerException(lis);

        Delegate d;
        //如果方法收听者没有该方法
        if (!eventTable.TryGetValue(lis out d))
            throw NoDelegateException(lis);
    }

    //添加收听者
    public static void AddListener(string lisMessage mess) {
        CheckAddListener(lis);
        eventTable.Add(lis mess);
    }

    public static void AddListener(string lis Message mess)
    {
        CheckAddListener(lis);
        eventTable.Add(lis mess);
    }

    public static void AddListener(string lis Message mess)
    {
        CheckAddListener(lis);
        eventTable.Add(lis mess);
    }

    //移除收听者
    public static void RemoveListener(string lis) {
        CheckRemoveListener(lis);
        eventTable.Remove(lis);
    }
    
    //发送信息 接受者成功处理 返回true else false
    public static bool Broadcase(string lis)
    {
        CheckBroadcastListener(lis);

        Delegate d;
        eventTable.TryGetValue(lis out d);
        Message me = d as Message;
        if (me != null)
        {
            if (me())
                return true;
            else return false;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5378  2014-08-03 13:08  NotificationCenter.cs

     文件       1897  2014-08-03 13:21  TimeClock.cs

----------- ---------  ---------- -----  ----

                 7275                    2


评论

共有 条评论