unity3d 消息传递系统Messaging System
来源:互联网 发布:数据精灵后台授权 编辑:程序博客网 时间:2024/04/28 04:03
消息传递系统
新的UI设计的系统使用一个消息传递系统来取代SendMessage。 该系统是纯c#和旨在解决与SendMessage存在的一些问题。 使用自定义接口,可以实现系统工作在MonoBehaviour表明组件能够接收一个回调消息传递系统。 当调用目标指定GameObject;所有组件的调用将GameObject实现指定的接口,调用发出。 消息传递系统允许自定义用户数据被传递,以及多大程度上通过GameObject层次事件应该传播;这是应该指定GameObject只是执行,或者它也应该执行的孩子和父母。 除了这个消息传递框架提供了辅助函数搜索并发现GameObjects实现给定的消息传递接口。
消息传递系统是通用的,设计用于不仅由UI系统也由一般的游戏代码。 添加自定义消息事件比较简单,他们将使用相同的框架,对所有事件处理UI系统使用。
如何定义一个自定义的消息?
如果你希望定义一个自定义消息是相对简单的。 UnityEngine。 EventSystems名称空间都有一个基本的界面称为“IEventSystemHandler”。 任何从这可以被认为是通过消息传递系统接收事件的目标。
public interface ICustomMessageTarget : IEventSystemHandler{ // functions that can be called via the messaging system void Message1(); void Message2();}
一旦定义该接口由MonoBehaviour就可以实现。 当它定义函数实现将如果执行给定的消息发布在此MonoBehaviours GameObject。
public class CustomMessageTarget : MonoBehaviour, ICustomMessageTarget{ public void Message1() { Debug.Log ("Message 1 received"); } public void Message2() { Debug.Log ("Message 2 received"); }}
现在存在一个脚本,可以接收消息我们需要发出消息。 通常这是在回应一些松散耦合的事件发生。 例如,在UI系统我们问题事件诸如PointerEnter PointerExit,以及各种其他的事情可以发生在响应用户输入到应用程序中。
静态的助手类发送消息的存在。 作为参数需要一个目标对象的信息,一些特定于用户的数据,和一个映射到特定的函数的函子的消息接口你希望的目标。
ExecuteEvents.Execute<ICustomMessageTarget>(target, null, (x,y)=>x.Message1());
这段代码将执行函数将消息GameObject目标上的任何组件实现ICustomMessageTarget接口。 ExecuteEvents类脚本文档涵盖了其他形式的执行功能,如执行在孩子或父母。
- unity3d 消息传递系统Messaging System
- 消息传递(Messaging)
- 分布式发布订阅消息系统 Kafka (A distributed publish-subscribe messaging system)
- Spring Integration in action 2 - 消息传递(Messaging)
- Android unity3d 交互传递消息
- System.Messaging 性能
- Unity3D:粒子系统Particle System
- unity3D粒子系统--Particle System
- Unity3D与Android相互传递消息
- Unity3D传递ProtoBuf-net消息测试
- Unity3D与Android相互传递消息
- Unity3D传递ProtoBuf-net消息测试
- Unity3D 与Android 相互传递消息
- Unity3d 简单的消息系统
- Native Client - Application - Messaging System
- Unity3D深入浅出 - 粒子系统(Particle System)
- Unity3D 新版Particle System(粒子系统)
- Unity3D:unity与Android相互传递消息 & unity与ios相互传递消息
- IOS多线程开发其实很简单
- mysql "email"字段 的属性项没有设置成UNSIGNED,但是添加'0'到email字段报错:#1062 –Duplicate entry '1' for key 'email',求解
- matlab中的符号对象与符号运算
- HDU 1087 lcs变形 (简单DP)
- AndroidStudio中使用.9图片
- unity3d 消息传递系统Messaging System
- 学习C++(2)之类的静态成员及静态成员函数
- UIPickerView内容居中显示,设置初始默认值
- 如何一次退出多个Activity
- 获取当前系统时间作为文件名
- 两个链表的交叉——值得注意的错误
- Heritrix3.3.0源码阅读 允许重复下载
- Redis源码分析二、Redis简单动态字符串
- sqlite3.OperationalError: unable to open database file