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

admin2年前unity基础API282

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


引入命名空间

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使用input system制作一个摇杆控制物体移动

Unity使用input system制作一个摇杆控制物体移动

1:首先使用UI做个摇杆的模型 两个图片嵌套,外侧是边界,中间图片是摇杆2:使用inputSYSTEM创建事件3:玩家物体上绑定脚本using System.Collections...

blender导出模型和动画到Unity

blender导出模型和动画到Unity

1:首先我们确保导出的模型是FBX2:模型的Rig设置为泛型 avatar根据实际情况可以选择无或则从此模型创建3:设置动画控制器,把模型中的动画拖入就可以了...

Unity 创建2D地图技巧

Unity 创建2D地图技巧

1:瓦片尺寸的设置这里的每个单位像素要和图片的真实的宽高一样,否则绘制的时候出现缩放2: 地图碰撞添加需要给地图添加碰撞体如图然后还需要加上如下碰撞体最后需要勾选上 TileMap Coll...

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

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

Unity 插值运算

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

Unity 读取Asset目录下物体

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

发表评论    

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