EventSystem

简介

  • Input
  • IPointerEnterHandler等接口
  • 键盘,鼠标,操作杆

Input

  1. GetAxis:返回float,对应的name为InputSetting对应的
  2. GetButton:返回bool,对应的name为InputSetting对应的
  3. GetKey:返回bool
-   KeyCode:对应键值
-   string:对应InputSetting对应的每一个下面的NegativeButton等Button
if (Input.GetButton("Horizontal"))
{
    Debug.LogError("GetButton");
}

float h = Input.GetAxis("Horizontal");
if (0!=h)
{
    Debug.LogError("GetAxis");
}

if (Input.GetKey(KeyCode.A))
{
    Debug.LogError("GetKey_keycode");
}

if (Input.GetKey("a"))
{
    Debug.LogError("GetKey_name");
}
  1. mousePresent:检测鼠标设备,官方文档中解释在各个平台会有很大出入
  2. mouseScrollDelta:返回(0,0,1)或者(0,0,-1)
  3. mousePosition:返回鼠标在屏幕坐标系坐标
if (Input.mousePresent)
{
    Debug.LogError("______mousepresent");
}
Debug.LogError(Input.mouseScrollDelta+"______scroll");
Debug.LogError(Input.mousePosition+"_____position");
  1. touchSupported:触控支持
  2. touchPressureSupported:触控按压支持
  3. multiTouchEnabled:多个触控支持
  4. stylusTouchSupported:触控板支持
  5. simulateMouseWithTouches:通过触摸启用/禁用鼠标模拟。默认情况下,此选项已启用。如果启用,最多三个并发触摸将转换为相应鼠标按钮上的状态(例如:双指点击将等于鼠标右键单击)。
  6. touchCount:
  7. GetTouch:
  8. touches:
Touch[] to = Input.touches;
if (to.Length>0)
{
    Debug.LogError(to.Length);
    if (to[0].phase==TouchPhase.Began)
    {
        Debug.LogError("begin");
    }
    else if (to[0].phase == TouchPhase.Moved)
    {
        Debug.LogError("move");
    }
    else if (to[0].phase == TouchPhase.Stationary)
    {
        Debug.LogError("station");
    }
    else if (to[0].phase == TouchPhase.Ended)
    {
        Debug.LogError("end");
    }
}

Touch

  1. position:触控的当前屏幕坐标
  2. rawPosition:触控的开始移动坐标
  3. deltaPosition:触控的每次移动方向坐标
  4. TouchPhase:触控状态Begin,Move,Stationary,End
  5. TouchType:触控类型,直接触控,远程的,还是触控笔那种
  6. fingerId:开始:手指放上,依次0123;移开1号,其他不变;再放上一个,从0开始分配空着的1

EventSystem

  1. InputModule:StandaloneInputModule和TouchInputModule
  2. Raycaster:Graphic Raycaster(UI),Physics 2D Raycaster(2d),Physics Raycaster(3d)

可以统一用EventSystem来处理射线检测问题,ui摄像机处理ui层,场景摄像机添加Physics Raycaster组件处理射线检测

接口 含义
IPointerEnterHandler 进入
IPointerExitHandler 离开
IPointerDownHandler 按下
IPointerUpHandler 抬起
IPointerClickHandler 按下和抬起
IInitializePotentialDragHandler 可拖拽物体被发现,可用来初始化一些变量
IBeginDragHandler 开始拖拽
IDragHandler 拖拽中
IEndDragHandler 拖拽结束时 (when)
IDropHandler 拖拽结束位置(where)
IScrollHandler 鼠标滚轮
IUpdateSelectedHandler 选中物体时,持续发送
ISelectHandler 物体变为被选择
IDeselectHandler 物体变为取消选择
IMoveHandler 物体移动(左右上下等)
ISubmitHandler submit(提交)按钮按下
ICancelHandler cancel(取消)按钮按下

PointerEventData

  1. pointerPress:The GameObject that received the OnPointerDown
  2. dragging:是否拖拽发生
  3. scrollDelta:滚轮值变化
  4. clickCount:点击次数
  5. clickTime:上次发送点击事件的时间
  6. position:当前坐标
    public void OnPointerClick(PointerEventData eventData)
    {
        if (eventData.clickCount == 2)
        {
            Debug.log("双击");
        }
    }

OnMouseXXX

  • 在update之前调用,EventSystem是在update中每帧调用,优先进行
EventSystem_第1张图片
Script lifecycle flowchart.jpg

参考

https://blog.csdn.net/tom_221x/article/details/78457615

你可能感兴趣的:(EventSystem)