unity3d 消息传递系统Messaging System

消息传递系统

新的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类脚本文档涵盖了其他形式的执行功能,如执行在孩子或父母。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值