Unity EventSystem ----- Unity事件系统
参考资料 : Unity官方文档
六个组件需要学习(Touch Input Module组件已被弃用)
- Event System Manager 负责管理跟事件有关的元素
- Graphic Raycaster 负责画布上的射线投
- Physics Raycaster 负责3D游戏物体的射线投射
- Physics2D Raycaster 负责2D游戏物体的射线投射
- Standalone Input Module 负责输入的处理
- Event Trigger 负责事件处理程序的注册
Standalone Input Module
该模块使用 :
- 垂直/水平轴给键盘或者导航控制器。
- 提交/取消按钮来发送提交/取消事件。
- 事件之间有一个timeout来允许设置每秒的最大事件数量。
该模块流程 :
-
如果输入了来自输入窗口的有效轴,发送一个Move 事件给被选中的游戏物体。
-
如果点击了提交/取消按钮,发送提交/取消事件给被选中的游戏物体。
鼠标输入流程 :
- 如果按下鼠标:
- 发送 PointerEnter 事件(发送给当前层级中所有可以处理它的对象)
- 发送 PointPress 事件
- 缓存拖动处理对象(该层级第一个可以处理的对象)
- 发送 BeginDrag 事件给拖动处理对象
- 发送被按压的对象作为 Selected 给Event System
- 如果鼠标持续的按下 :
- Process movment (不懂)
- 发送 DragEvent 给缓存的拖动对象
- 如果触摸在对象之间移动,处理PointerEnter 和 PointerExit 事件
- 如果松开鼠标 :
- 发送 PointerUp 事件给接收过 PointerPress 的对象
- 如果当前悬停的对象和 PointPress对象相同,发送一个 PointerClick 事件
- 如果它是缓存的拖地处理对象,发送一个 Drop 事件
- 发送 EndDrag 事件到缓存的拖地处理对象。
- 还可能是滚轮滚动事件
Event Trigger
事件触发器从事件系统接收事件,并调用每个事件的注册函数。
注 :
<