美文网首页
Unity-UGUI之Event System

Unity-UGUI之Event System

作者: passiony | 来源:发表于2018-04-25 20:59 被阅读189次

    Event System

    新建Canvas话不是,系统自动生成的Event System里面主要有两个Components,分别是Event System和Standalone Input Module。
    *EventSystem负责管理,BaseInputModule负责输入,BaseRaycaster负责确定目标对象。

    1. EventSystem

    负责处理输入、射线投射以及发送事件
    一个场景中只能有一个EventSystem,否则EventSystem会失效

    2. BaseInputModule

    负责处理输入(点击、拖拽等),把输入事件发送到具体的对象。
    *可以自己继承BaseInputModule来实现自己的交互方式。

    • Standalone Input Module:基本的键盘和鼠标输入系统,并跟踪鼠标的位置,以及鼠标/键盘所按下的按键。
    • Touch Input Module:基本的触摸输入系统,用于处理触摸、拖拽以及位置数据,并可在其实现中模拟鼠标行为。
    • Pointer Input Module:提供上面两者的基本功能,同时还可以通过代码进行访问。

    BaseRaycaster

    Unity中射线检测的基类,负责确定目标对象,此类系统均依赖于Event Camera,并用作全部光线投射的源。
    *可以自己继承BaseRaycaster来创建自己的光线投射系统。

    • 在UI中:GraphicRaycaster
    • 非UI中:Physics Raycaster 和 Physics 2D Raycaster

    UI事件工作流

    BaseInputModule接收用户的输入
    BaseRaycaster根据用户的输入,找到目标物体
    根据用户的输入事件,调用目标物体上的对应接口实现。
    内部工作机制
    EventSystem把其GameObject上的所有BaseInputModule放到一个内部列表中。
    在每一帧调用UpdateModules方法,该方法会去调用列表中所有BaseInputModule的UpdateModule方法。
    在UpdateModule方法中,BaseInputModule会把自己的状态修改为"Updated",之后BaseInputModule的Process接口才会被调用

    自定义EventSystem事件
    事件都必须在对象上操作才会发生

    • 点击事件
    接口 事件 作用
    IPointerEnterHandler OnPointerEnter 鼠标进入对象
    IPointerExitHandler OnPointerExit 鼠标离开对象
    IPointerDownHandler OnPointerDown 按下鼠标
    IPointerClickHandler OnPointerClick 点击中该对象,在OnPointerUp后发生
    IPointerUpHandler OnPointerUp 松开鼠标
    • 拖拉事件
    接口 事件 作用
    IBeginDragHandler OnBeginDrag 开始拖拽,必须同时实现IDragHandler
    IDragHandler OnDrag 正在拖拽,每当移动一定距离,就发生一次拖拽事件
    IEndDragHandler OnEndDrag 结束拖拽,必须同时实现IDragHandler
    IInitializePotentialDragHandler OnInitializePotentialDrag 可能发生拖拽,必须同时实现IDragHandler,在对象内点击就会发生
    IDropHandler OnDrop 拖拉结束,拖拉开始的地方必须先实现IDragHandler
    • 其他事件
    接口 事件 作用
    IScrollHandler OnScroll 操作鼠标中间的滚轮
    ISelectHandler OnSelect 当EventSystem选中该对象 使用EventSystem中的SetSelectedGameObject方法来选中
    IDeselectHandler OnDeselect 不再选中该对象,点击对象外的地方就会变成不选中
    IUpdateSelectedHandler OnUpdateSelected 当对象被选中,则每帧都会发生,对象被选中才会发生
    ISubmitHandler OnSubmit 点击Submit键(默认是Enter键),对象被选中才会发生
    ICancelHandler OnCancel 点击Cancel键(默认是Esc键),对象被选中才会发生
    IMoveHandler OnMove 点击方向键,对象被选中才会发生

    相关文章

      网友评论

          本文标题:Unity-UGUI之Event System

          本文链接:https://www.haomeiwen.com/subject/nlfulftx.html