一、什么是事件系统
事件系统就是根据输入(鼠标、键盘、触摸等)将消息发送给对象的系统。它的运作主要依靠「Event System」事件系统、「Input Module」输入模块、「Raycaster」射线发射器三个组件协同完成。
- Event System:主要用来管理当前处于选中状态的游戏对象、当前正在使用的输入模块、射线发射器
- Input Module:主要用来处理输入、管理事件状态、将事件发送给场景中的对象
- Raycaster:用于确定鼠标指针位于哪个对象上方。Unity默认提供3中射线发射器,分别是「Graphic Raycaster」用于UI元素、「Physics 2D Raycaster」用于2D物理元素、「Physics Raycaster」用于3D物理元素
二、UGUI实现事件的三种方式
2.1 通过接口实现
Unity提供了许多事件接口,我们只需要在UI元素的脚本中实现其中的接口,并实现其中的方法,即可在特定动作时触发对应方法。
Unity提供的事件接口如下
| 接口 | 方法 | 调用时机 |
|---|---|---|
| IPointerEnterHandler | OnPointerEnter | 当指针进入对象时调用 |
| IPointerExitHandler | OnPointerExit | 当指针退出对象时调用 |
| IPointerDownHandler | OnPointerDown | 在对象上按下指针时调用 |
| IPointerUpHandler | OnPointerUp | 松开指针时调用(指针正在点击的游戏对象上) |
| IPointerClickHandler | OnPointerClick | 在同一对象上按下再松开指针时调用 |
| IInitializePotentialDragHandler | OnInitializePotentialDrag | 在找到拖动目标时调用,可用于初始化值 |
| IBeginDragHandler | OnBeginDrag | 即将开始拖动时在拖动对象上调用 |
| IDragHandler | OnDrag | 发生拖动时在拖动对象上调用 |
| IEndDragHandler | OnEndDrag | 拖动完成时在拖动对象上调用 |
| IDropHandler | OnDro |

本文介绍了Unity中的事件系统,包括EventSystem、InputModule和Raycaster组件的作用。讲解了通过接口和EventTrigger组件实现UGUI事件的两种方法,如拖拽、点击等交互效果,并给出了动态添加事件的代码示例。
最低0.47元/天 解锁文章
411

被折叠的 条评论
为什么被折叠?



