Unity给UI元素物体添加操作响应事件

admin2年前unity基础API289

可以给自定义物体如图片等添加响应事件


引入命名空间

using UnityEngine.EventSystems;



类中继承接口

IPointerDownHandler


实现接口

    public void OnPointerDown(PointerEventData eventData)
    {
        自定义处理代码
    }



更多接口

IPointerDownHandler 接口,可响应鼠标在自身碰撞体范围内按下事件

需要实现 void OnPointerDown(PointerEventData eventData) 方法.



IPointerUpHandler 接口,可响应鼠标在自身碰撞体范围内松开事件

需要实现 void OnPointerUp(PointerEventData eventData) 方法.



IPointerClickHandler 接口,可响应鼠标在自身碰撞体范围内点击事件,什么叫点击呢,就是你在碰撞体范围内按下了,然后又在范围内松开了,这中间是可以移动的,哪怕你移出范围了,只要你松开的时候回来就算.

需要实现 void OnPointerClick(PointerEventData eventData) 方法.



IPointerEnterHandler 接口,可响应鼠标进入自身碰撞体范围事件

需要实现 void OnPointerEnter(PointerEventData eventData) 方法.



IPointerExitHandler 接口,可响应鼠标离开自身碰撞体范围事件

需要实现 void OnPointerExit(PointerEventData eventData) 方法.



IPointerMoveHandler 接口,可响应鼠标在自身碰撞体范围内移动事件

需要实现 void OnPointerMove(PointerEventData eventData) 方法.



IScrollHandler接口,可响应鼠标在自身碰撞体范围内滑动滚轮事件

需要实现 void OnScroll(PointerEventData eventData) 方法. 作者:白白_可乐 https://www.bilibili.com/read/cv18219864/ 出处:bilibili




接下来是拖拽相关的:

IDragHandler 接口,在事件系统的拖拽相关中,这是个比较关键的接口,虽然只

需要实现void OnDrag(PointerEventData eventData)方法

但是其他的几个接口在没有他的情况下是不完整(或者不工作的),这个方法响应的是拖拽事件,那么所谓拖拽事件,就是鼠标按住不放的情况下移动了,在移动的每一帧都会触发拖拽事件,你按着不动了就暂停触发,继续动继续触发,松开就停止触发.

IInitializePotentialDragHandler接口,检测当前脚本是否实现了前面那个IDragHandler接口,如果脚本有IDragHandler接口的话,在你按下鼠标之后触发本接口(触发时机是晚于IPointerDownHandler)

需要实现void OnInitializePotentialDrag(PointerEventData eventData)方法



IBeginDragHandler接口,当拖拽开始时触发,即按下鼠标开始移动的时候,按着不触发,动的那一帧触发,如果脚本没有实现IDragHandler接口的话不会触发.

需要实现void OnBeginDrag(PointerEventData eventData) 方法.



IEndDragHandler接口,当拖拽结束时触发,松开就是结束.

需要实现void OnEndDrag(PointerEventData eventData) 方法.



IDropHandler接口,既然有拖拽,那么就自然有放置,当你正在拖拽时,如果在实现该接口的物体的碰撞体范围内松开,就会触发该接口,触发时机早于IEndDragHandler接口.

需要实现void OnDrop(PointerEventData eventData) 方法. 作者:白白_可乐 https://www.bilibili.com/read/cv18219864/ 出处:bilibili


相关文章

Unity 插值运算

在unity3d中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色之间,其函数原型如下: 1.Material.Lerp&nbs...

利用射线获取被点击的物体信息

首先被点击的物体需要加上碰撞体Collider监听点击代码:鼠标点击:if (Input.GetMouseButtonDown(0))     &n...

相机跟随角色移动镜头缩放方法

这种方法最简单可以实现相机跟随角色平移1:计算相机和目标物体的距离  offset = this.transform.position - ...

Unity 读取Asset目录下物体

读取方法:AssetDatabase.LoadAssetAtPath使用方法path = "Assets/CustomizableAnimeGirl/Models/Mat...

Unity寻找子物体的几种方法

    1: transform.Find()寻找子物体   transform.Find(“子物体名字”)2: GameObject.FindGam...

Unity场景跳转方法

实现跳转不到的场景,需要先把场景添加到Build中首先引入命名空间using UnityEngine.SceneManagement;然后使用方法跳转 SceneManager.L...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。