UnityUI—EventSystem

404 阅读2分钟

一、EventSystem物体

第一次在Unity中创建UI元素时,总会自动生成一个EventSystem物体,它包含三个组件:Transform、EventSystem、Standalone Input Module。如果我们把它删除了,会发现UI上的事件(比如点击、拖拽)将不会被检测到。没错,它就是用来处理UI相关的事件的。

1.1 EventSystem组件

EventSystem基于输入给物体发送事件,它在整个事件系统中扮演的主要角色是: 1.管理被选中的物体 2.管理正在使用的Input Module 3.管理射线 4.根据需要更新所有Input Module 它相当于于一个管理者和通讯者,如果仅仅把此组件挂在一个游戏物体上是无效的,因为它还要结合其它组件一起使用。

在这里插入图片描述

属性功能
First Selected一开始就默认选中行的物体
Send Navigation Events事件系统是否允许导航事件(移动/提交/取消)。如果取消了,按上下左右就不能切换选中项了。
Drag Threshold拖拽阈值,即鼠标当前帧和上一帧达到此值,才会响应拖拽事件

1.2 Standalone Input Module 组件

Input Module是事件系统运行逻辑的主要所在,它主要用于: 1.处理输入 2.管理事件状态 3.发送事件给游戏物体 在EventSystem中,同一时刻只能激活一个Input Module,并且此组件必须挂载到EventSystem组件相同物体上才能有效。 你也可以扩展此组件:[官方文档](Messaging System | Unity UI | 1.0.0 (unity3d.com))

在这里插入图片描述

在Inspector面板上,它的前四个属性是用来设置移动、提交和取消按钮的,Input Module会在这些按钮触发时将事件发送给选中的物体。这里的值要设置为Input Manager(Edit->Project Setting->Input Manager)面板中已有的值。

属性功能
Horizontal Axis水平移动轴
Vertical Axis垂直移动轴
Submit Button提交按钮
Cancel Button取消按钮
Input Actions Per Second每秒的输入值个数
Repeat Delay每秒重复率生效前输入操作的延迟(秒)
Force Module Active启用此属性可强制此独立输入模块处于活动状态。