使用事件系统可以根据输入(即键盘、鼠标、触摸或自定义输入)将事件发送到应用程序中的对象。事件系统包含一些共同协作以发送事件的组件。
将事件系统组件添加到游戏对象时,应该会注意到该组件未公开太多功能,这是因为事件系统本身设计为事件系统模块之间通信的管理器和协调器。
事件系统的主要作用如下:
输入模块包含定义事件系统行为方式的主要逻辑,可用于:
事件系统中一次只能有一个输入模块处于激活状态,这些输入模块必须是与事件系统组件位于同一游戏对象上的组件。
如果希望编写自定义输入模块,建议发送 Unity 中现有 UI 组件支持的事件,但是也可以扩展事件和编写自定义的事件(详见消息系统文档)。
Raycasters are used for sending figuring out what the pointer is over, it is common for Input Modules to use the Raycasters configured in the scene to calculate what the pointing device is over.
默认情况下提供了 3 种射线投射器:
如果在场景中配置了 2D/3D 射线投射器,很容易让非 UI 元素接收来自输入模块的消息。只需附加一个脚本来实现其中一个事件接口即可。