资源简介
用于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
相关资源
- Unity3D.4.0.0简体中文汉化补丁
- KinectWrapperPackage for KinectSDK1.6
- unity3d光影插件
- Unity3D内置Shader源码与详解解释文档
- 国外经典的31个flash as特效as3.0
- Unity3D《最后一战》全套完整源代码
- ECharts V3.1.6 最新图表控件修复版兼容
-
unity3d读取xm
l插件Mono.xm l - Unity3d背包物品拖拽
- 无限滚动TableView
- Unity3D使用socket通讯源码
- 塔防游戏源码
- Unity3D插件-- LitJson.dll
- 2018unity3d 特效资源包大合集
- Unity3D读取Excel工具
-
Actionsc
ript3.0开发的射击小游戏 - arcgis api for js 自定义弹出专题图(饼
- unity3d RPG游戏《外星人》完整
- unity3d实现的弹幕功能
- Unity3D中Blendshapes之间的过渡方式
- unity3D手机游戏开发光盘链接
- Unity3d SGIzmo
- node.js实现简单登录和注册
- unity3d 云特效
- node.js之express的token验证
- js链接生成二维码并实现保存二维码到
- Unity3D 温度图、热点图
- BloodSlider
- Unity下调用摄像头识别二维码
- js-xlsx使用demo
评论
共有 条评论