Unity的新UI系统引入了一种新的消息传递系统,旨在替代传统的SendMessage方法。这个系统使用纯C#编写,并通过自定义接口的方式,解决了SendMessage的一些局限性。新的消息系统不仅支持在目标GameObject上调用指定接口,还允许在整个GameObject层次结构传播消息。通过该系统,你可以轻松地传递自定义数据,并根据需求控制消息的传播范围(例如只在当前对象、其子对象或父对象中执行)。
Messging System的优势
- 类型安全:传统的SendMessage使用字符串来指定消息,容易出现拼写错误和运行时错误。新的系统使用接口,提供了类型安全的调用。
- 灵活性:允许传递自定义数据,并灵活控制消息在GameObject层次结构中的传播方式。
- 统一的事件处理:新的系统可以轻松地与UI系统的事件处理集成,并支持自定义事件。
自定义消息的定义
在Unity的UntiyEngine.EventSystems命名空间中,有一个基础接口IEventSystemHandler。任何继承自这个接口的接口都可以作为消息接收器。
定义自定义消息接口
using UnityEngine.EventSystems;
public interface ICustomMessageTarget : IEventSystemHanlder
{
// 可以通过消息系统调用的函数
void Message1();