Debugging C# code in Unity
消息系统

事件系统

使用事件系统可以根据输入(即键盘、鼠标、触摸或自定义输入)将事件发送到应用程序中的对象。事件系统包含一些共同协作以发送事件的组件。

概述

将事件系统组件添加到游戏对象时,应该会注意到该组件未公开太多功能,这是因为事件系统本身设计为事件系统模块之间通信的管理器和协调器。

事件系统的主要作用如下:

  • 管理视为选中状态的游戏对象
  • 管理正在使用的输入模块
  • 管理射线投射(如果需要)
  • 根据需要更新所有输入模块

输入模块

输入模块包含定义事件系统行为方式的主要逻辑,可用于:

  • 处理输入
  • 管理事件状态
  • 将事件发送到场景对象。

事件系统中一次只能有一个输入模块处于激活状态,这些输入模块必须是与事件系统组件位于同一游戏对象上的组件。

如果希望编写自定义输入模块,建议发送 Unity 中现有 UI 组件支持的事件,但是也可以扩展事件和编写自定义的事件(详见消息系统文档)。

射线投射器

射线投射器用于确定指针在哪个对象上方。输入模块通常使用场景中配置的射线投射器来计算指针设备位于哪个对象上方。

默认情况下提供了 3 种射线投射器:

  • 图形射线投射器 (Graphic Raycaster) - 用于 UI 元素
  • 2D 物理射线投射器 (Physics 2D Raycaster) - 用于 2D 物理元素
  • 物理射线投射器 (Physics Raycaster) - 用于 3D 物理元素

如果在场景中配置了 2D/3D 射线投射器,很容易让非 UI 元素接收来自输入模块的消息。只需附加一个脚本来实现其中一个事件接口即可。

Debugging C# code in Unity
消息系统