一、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 | 启用此属性可强制此独立输入模块处于活动状态。 |