声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦

1.EventSystem物体

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

1.1 EventSystem组件

EventSystem基于输入给物体发送事件,它在整个事件系统中扮演的主要角色是:

1.管理被选中的物体

2.管理正在使用的Input Module

3.管理射线

4.根据需要更新所有Input Module

它相当于于一个管理者和通讯者,如果仅仅把此组件挂在一个游戏物体上是无效的,因为它还要结合其它组件一起使用。

unity event system原理 unity的eventsystem_事件系统

属性

功能

First Selected

一开始默认选中的物体

Send Navigation Events

事件系统是否允许导航事件(移动/提交/取消)。如果取消了,按上下左右就不能切换选中项了。

Drag Threshold

拖拽阈值,即鼠标当前帧和上一帧达到此值,才会响应拖拽事件

1.2 Standalone Input Module 组件

Input Module是事件系统运行逻辑的主要所在,它主要用于:
1.处理输入
2.管理事件状态
3.发送事件给游戏物体
在EventSystem中,同一时刻只能激活一个Input Module,并且此组件必须挂载到EventSystem组件相同物体上才能有效。

unity event system原理 unity的eventsystem_事件系统_02


在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

启用此属性可强制此独立输入模块处于活动状态。