Event System(事件系统)
Event System(事件系统)是一种根据输入(无论是键盘、鼠标、触摸还是自定义输入)向应用程序中的对象发送事件的机制。Event System 由一些组件协作组成,用于发送事件。
当你向一个 GameObject(游戏对象)添加 Event System(事件系统)组件时,你会注意到它本身没有暴露太多功能,这是因为 Event System 本身被设计为一个 管理器 ,用于协调 Event System 模块之间的通信。
Event System 的主要职责如下:
- 管理哪个 GameObject 被视为选中的对象
- 管理正在使用的 Input Module(输入模块)
- 管理 Raycasting(射线检测)(如果需要的话)
- 根据需要更新所有 Input Module(输入模块)
Input Modules(输入模块)
Input Module 是存放 Event System 主要逻辑的地方,它们用于:
- 处理输入
- 管理事件状态
- 向场景中的对象发送事件
在一个 Event System 中,同一时间只能有一个 Input Module(输入模块)处于激活状态,并且它们必须是与 Event System 组件位于同一个 GameObject上的组件。
如果你想编写自定义的 Input Module,可以发送 Unity 中已有 UI 组件支持的事件。要扩展并编写你自己的事件,请参阅 Messaging System(消息系统)文档。
Raycasters(射线检测器)
Raycaster 用于确定指针当前指向的对象。Input Module 通常会使用场景中配置好的 Raycaster 来计算指针设备所指向的对象。
Unity 默认提供了三种 Raycaster(射线检测器):
- Graphic Raycaster (图形射线检测器)——用于 UI 元素
- Physics 2D Raycaster (2D 物理射线检测器)——用于 2D 物理元素
- Physics Raycaster (3D 物理射线检测器)——用于 3D 物理元素
如果你在场景中配置了 2D / 3D Raycaster,那么让非 UI 元素接收 Input Module 发送的消息就很简单了。只需附加一个实现了相应事件接口的脚本即可。关于示例,请参阅 IPointerEnterHandler 和 IPointerClickHandler 的脚本参考页面。
PREVIOUSRich Text
NEXTMessaging System