一:EventSystem事件系统
一个场景中只能有一个EventSystem组件,创建UI时如果没有EventSystem则自动创建一个
——First Selected:第一次默认选择的物体,默认都为null
——Send Navigation Events:是否可以使用导航事件(键盘上下左右)控制
——Drag Threshold:视为拖拽操作的最小距离
二:EventInterface事件接口
进入、离开相关:
——IPointerEnterHandler
鼠标进入可视元素矩形区域内时
——IPointerExitHandler
鼠标离开可视元素矩形区域内时
按下、抬起、点击相关:
——IPointerDownHandler
鼠标在可视元素矩形区域内按下时
——IPointerUpHandler
鼠标在可视元素矩形区域内按下后,在任意位置抬起时
——IPointerClickHandler
鼠标在可视元素矩形区域内按下后,在可视元素矩形区域内抬起时
拖拽相关:
——IBeginDragHandler(依赖IDragHandler接口)
开始拖动时
——IDragHandler
拖动中时
——IEndDragHandler(依赖IDragHandler接口)
结束拖动时
——IDropHandler(依赖IDragHandler接口)
结束拖动时,在IEndDragHandler之前执行
——IInitializePotentialDragHandler(依赖IDragHandler接口)
将要开始拖拽时,按下时就会执行,在IBeginDragHandler之前,IPointerDownHandlers之后执行
选择相关:响应必须依赖于Selectable为基类的组件,或者使用EventSystem.current.SetSelectedGameObject设置选择的物体
——ISelectHandler
选择时
——IDeselectHandler
取消选择时
——IUpdateSelectedHandler
选择中
系统按键相关:与BuildSettings—PlayerSettings—Input中的设置相对应
——IMoveHandler
与Horizontal和Vertical相对应
——ISubmitHandler
与Submit相对应
——ICancelHandler
与Cancal相对应
——IScrollHandler
鼠标滑轮滚动时
三:EventData事件数据
常用事件数据:
——position:鼠标当前屏幕坐标
——pressPosition:鼠标点击时的屏幕坐标
——delta:当前点击与上一次点击的位置差值(屏幕坐标)
——enterEventCamera:发起射线检测的相机
——pointerCurrentRaycast:鼠标进入时的射线信息
四:Raycaster射线检测
Unity中的射线检测都是从摄像机发起的
Graphic Raycaster是基于继承了Graphic类的组件,基于图形像素做的射线检测
这个组件用于UI元素的交互,一个Canvas下的UI元素想要响应射线检测必须在Canvas上挂在此组件
Ignore Reversed Graphics:是否忽略反转图像,图片旋转180度后是否还可以响应射线
Blocking Objects和Blocking Mask:射线检测可以被哪些类型的碰撞器所阻挡(Overlay渲染模式下无效)
——PhysicsRaycaster和Physics2DRaycaster
Physics Raycaster是基于碰撞器做的射线检测,给Camera添加PhysicsRaycaster或Physics2DRaycaster后就可以让不是UI的物体响应EventSystem事件了
Event Mask::屏蔽指定层不参与射线检测