Unity 脚本之间的消息传递,事件管理
来源:互联网 发布:数据库系统的二级映射 编辑:程序博客网 时间:2024/06/05 08:43
在游戏中发生了一个事件,我们如何把这个时间通知给其他GameObject:比如游戏中发生了爆炸,我们需要在一定范围内的GameObject都感知到这一事件。有的时候,我们希望摄像机以外的物体不要接到我们这一事件的通知。游戏中丰富多彩的世界正是由通信机制构成的
using System.Collections;using System.Collections.Generic;using UnityEngine;public class EventCenter { public delegate void DelCallBack(); /// <summary> /// 《所要监听的类型,监听到以后要执行的委托》 /// </summary> public static Dictionary<EEventType, DelCallBack> m_dDicEventType = new Dictionary<EEventType, DelCallBack>(); /// <summary> /// 添加监听 /// </summary> /// <param name="eventType"></param> /// <param name="handler"></param> public static void AddListener(EEventType eventType,DelCallBack handler) { if (!m_dDicEventType.ContainsKey(eventType)) { m_dDicEventType.Add(eventType,null); } m_dDicEventType[eventType] += handler; } /// <summary> /// 取消指定的监听 /// </summary> /// <param name="eventType"></param> /// <param name="handler"></param> public static void RemoveListener(EEventType eventType, DelCallBack handler) { if (m_dDicEventType.ContainsKey(eventType)) { m_dDicEventType[eventType] -= handler; } } /// <summary> /// 取消所有的监听 /// </summary> public static void RemoveAllListener() { m_dDicEventType.Clear(); } /// <summary> /// 广播消息 /// </summary> public static void Broadcast(EEventType eventType) { DelCallBack del; if (m_dDicEventType.TryGetValue(eventType,out del)) { if (del!=null) { del(); } } }}public enum EEventType{ }当我们触发事件时 只需要调用广播消息就可以了,这样所有添加了这个事件的监听的方法都会被自动执行。
阅读全文
0 0
- Unity 脚本之间的消息传递,事件管理
- Unity事件管理类,用于不同对象之间传递消息
- Unity中使用自定义事件在View之间传递消息
- Unity物体之间、脚本之间的参数传递
- 关于Unity的委托事件处理脚本之间的交互
- C#窗体之间传递消息和事件
- 线程之间消息的传递
- 03_Qt的事件传递、消息过滤器和消息通知(类与类之间通讯)
- unity 事件的触发脚本
- Unity中游戏体的消息传递
- Unity的三种消息传递
- pb 程序之间的消息传递
- android 不同进程之间的消息传递
- pb 程序之间的消息传递
- Acitivity和Service之间消息的传递
- MFC窗口之间的消息传递
- Unity不同脚本之间的执行顺序
- Unity不同脚本之间的执行顺序
- PAT 1079 Total Sales of Supply Chain(树遍历+BFS)
- PHP将Excel导入数据库及数据库数据导出至Excel的方法 亲测
- 单例模式 (二) 延迟加载/"懒汉模式" —— 使用DCL双检查锁机制
- Teamcenter11.2.3.1 安装时遇到的TreeCache无法创建的问题
- 微信支付签名遇到的坑
- Unity 脚本之间的消息传递,事件管理
- JavaScript(3)
- ios10.1上 交叉编译 boost1_64_0
- 第一个annotation版的HelloWorld
- 237. Delete Node in a Linked List(C语言版本)
- 相对路径面试题
- php 发送邮件教程 发送邮件附带附件 利用PHPMailer发送邮件教程
- Qt自定义加载控件Spinner
- 写的程序出现"open clipboard失败"的解决办法